我正在尝试实施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是否允许嵌套向量?在整个实施过程中,我真的不想跟踪数组的大小。
答案 0 :(得分:2)
你是因为你的小错误而责怪linux ......
virtual vector<vector<Element>> decompose(vector<Element> p) = 0;
这应该是: -
virtual vector<vector<Element> > decompose(vector<Element> p) = 0;
>> should be separated > >