Я пытаюсь реализовать шаблон DivideAndConquer. Первоначальный проект был в VisualStudio 2013, но когда я переводил исходный код в Linux, я получаю ошибки.
#pragma once
#include <vector>
using namespace std;
template <typename Element>
class DivideAndConquer
{
public:
~DivideAndConquer(){}
vector<Element> solve(vector<Element> p);
protected:
virtual bool isSimple(vector<Element> p) = 0;
virtual vector<Element> simplySolve(vector<Element> p) = 0;
virtual vector<vector<Element>> decompose(vector<Element> p) = 0;
virtual vector<Element> combine(vector<vector<Element>> p) = 0;
};
Ошибка читает DivideAndConquer.h:28: error: a function call cannot appear in a constant-expression
. У меня есть комментарии в моей версии, поэтому строка 28 является объявлением функции разложения. Существуют одинаковые ошибки для всех объявлений, связанных с вложенными векторами во всех других файлах.h.
Предоставляет ли Linux вложенные векторы в этот fasion? Я действительно не хочу отслеживать размер массива на протяжении всей моей реализации.
Вы обвиняете Linux в своей незначительной ошибке...
virtual vector<vector<Element>> decompose(vector<Element> p) = 0;
Это должно быть: -
virtual vector<vector<Element> > decompose(vector<Element> p) = 0;
>> should be separated > >
-std=gnu++0x
, -std=gnu++11
или более позднюю
>
пробелом.