继承类的成员函数不会更改继承的基类变量
Member function of inherited class won't change inherited base class variable
所以我有一个带有以下头文件的基类:
#ifndef ODESolver_H
#define ODESolver_H
#endif
#include "DoublePendulum.h"
class ODESolver
{
public:
ODESolver(DoublePendulum &);
virtual void Predict(const double &)=0;
DoublePendulum DP;
};
实现:
#include "ODESolver.h"
#include <iomanip>
ODESolver::ODESolver(DoublePendulum &DPRef) :DP(DPRef)
{}
以及从它继承的类:
#ifndef ODEEuler_H
#define ODEEuler_H
#endif
#include "ODESolver.h"
class ODEEuler : public ODESolver
{
public:
ODEEuler(DoublePendulum &);
void Predict(const double &);
};
实现:
#include "ODEEuler.h"
ODEEuler::ODEEuler (DoublePendulum &DPRef) :ODESolver(DPRef)
{}
void ODEEuler::Predict(const double &dt=0.005)
{
DP=DP+DP.Derivate()*dt;
cout << DP.getUp().getTheta() << endl;
}
问题是在上面的实现中,DP=DP+DP.Derivate()*dt;
不会做任何事情。我不知道这怎么可能。我已经检查了 .Derivate()
成员函数是否有效,并且它实际上返回了正确的值/对象。最重要的是,我在那里做什么并不重要,例如 DP=DoublePendulum RandomObject(1,2,3,4)
仍将保持DP不变。有什么想法吗?我希望我提供了足够的信息...
还有双摆等的实施和声明:
http://pastebin.com/ny3pU8aR
此赋值运算符
DoublePendulum DoublePendulum::operator= (DoublePendulum &DoublePendulumA)
{
return DoublePendulum (DoublePendulumA);
}
创建一个新值,但不会真正将 anyting 分配给赋值的左侧。这就是为什么它不会改变!
标准作业形式如下所示
DoublePendulum& DoublePendulum::operator= (const DoublePendulum& DoublePendulumA)
{
// assign to members of this object
return *this;
}
相关文章:
- 查找后更改类变量
- 通过继承类使用来自不同命名空间的运算符
- 从类继承时,继承的类是否会通过父类重新定义继承的变量
- 在类中继承静态变量?
- 继承类中的 C++ 成员变量类型重写
- 编辑从父类继承的变量
- 为什么我无法使用继承类访问私有变量?
- 为什么友元函数无法访问继承类的私有变量?
- 类是否可以在其构造函数的参数中设置它从另一个类继承的变量的值
- 派生模板类和继承成员变量的语法谜题
- 继承类的成员函数不会更改继承的基类变量
- 继承类层次结构中的C++虚拟变量
- 如何初始化继承类的静态变量
- 如何访问类变量?公共方法/getters与继承.优点和缺点是什么
- 如何在继承类中创建父类变量数组作为私有成员
- 让基类的方法使用继承类的静态成员变量...可能?
- 尽管有类继承,变量仍不可访问
- 在c++中如何访问继承类中的私有基成员变量
- 使用父类构造函数为继承的变量重新赋值
- 编译错误-模板化继承类中的c++成员变量初始化