【发布时间】:2014-04-21 16:28:33
【问题描述】:
当我尝试编译我的代码时出现此错误:
non-static reference member ‘Timestep& Timestep::previousTimestep’, can’t use default assignment operator
我创建了一个Problem,它创建了一个Timestep,对这个Timestep的引用应该存储在向量solution中。此外,我想存储对前一个 Timestep 的引用 - 并且对于第一个 Timestep,这将是对自身的引用......
我读到我需要定义一个自己的运算符,如果我在一个类中有const 成员,我尝试将其设置为相等。但是,从代码中删除了所有 const 元素,它仍然不起作用。有什么建议?非常感谢。
class Problem {
public:
void initialTimestep(arma::vec ic);
private:
std::vector<Timestep> solution;
};
void Problem::initialTimestep(vec ic){
Timestep myFirstTimestep(starttime, ic, nodes);
solution.push_back(myFirstTimestep);
}
class Timestep {
public:
Timestep(double starttime, arma::vec initialCondition, arma::vec nodelist);
private:
Timestep& previousTimestep; //const
};
Timestep::Timestep(double starttime, vec initialCondition, vec nodelist)
: previousTimestep(*this)
{
//do stuff
}
int main() {
int k = 3; //subdomains
vec v = linspace(0., 1., k+1); //node spacing
vec ic= ones<vec>(k+1); //initialconditions
Problem myProblem(v, ic, 0., 1., 0.1);
return 0;
}
【问题讨论】:
标签: c++ initialization constants