Вложенные векторы в Linux

0

Я пытаюсь реализовать шаблон 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? Я действительно не хочу отслеживать размер массива на протяжении всей моей реализации.

  • 1
    Разделите два > пробелом.
Теги:
templates
vector
g++

1 ответ

2
Лучший ответ

Вы обвиняете Linux в своей незначительной ошибке...

    virtual vector<vector<Element>> decompose(vector<Element> p) = 0;

Это должно быть: -

    virtual vector<vector<Element> > decompose(vector<Element> p) = 0;

>> should be separated > >
  • 5
    Или используйте -std=gnu++0x , -std=gnu++11 или более позднюю
  • 0
    Дай угадаю, это потому что >> оператор cin прав?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню