所以我的头文件看起来像这样:
class DerivedClass : public BaseClass{
public:
const std::string IMG_FILE_NAME = "picture.png";
};
我的cpp文件如下所示:
#include "DerivedClass.h"
DerivedClass::DerivedClass(int x, int y) : BaseClass(x, y, IMG_FILE_NAME){
//some code here.
}
在基类中,我使用字符串(IMG_FILE_NAME)来打开文件但由于某种原因它在那里为空,这会破坏程序。有人可以解释发生了什么吗?
答案 0 :(得分:4)
基类将在派生类之前构造。因此,在将IMG_FILE_NAME
发送到DerivedClass
构造函数之前,BaseClass
中的IMG_FILE_NAME
不会被实例化。
可能的解决方法是使int div_up(int n, int d) {
return n / d + (((n < 0) ^ (d > 0)) && (n % d));
} //i.e. +1 iff (not exact int && positive result)
保持静态。它应该在构造函数被调用之前初始化。