【发布时间】:2016-06-26 15:58:40
【问题描述】:
我有一个具有静态常量 unsigned int 变量的类。我想根据程序启动时传递的参数来初始化这个变量。我已经创建了一个示例,说明我想尝试弄清楚如何实现这一点。
main.cpp
int main() {
const unsigned int legs = 4;
Dog dog(legs);
return 0;
}
狗.h
class Dog {
public:
Dog(const unsigned int legs);
~Dog();
private:
static const unsigned int legs;
};
狗.cpp
Dog::Dog(const unsigned int l) : legs(l) {
}
Dog::~Dog() {
}
在main中,我创建了一个变量来模拟程序运行时传递的值。
编译器给出以下错误:
/home/jota/ClionProjects/Caca/Dog.cpp: In constructor ‘Dog::Dog(unsigned int)’:
/home/jota/ClionProjects/Caca/Dog.cpp:7:34: error: ‘const unsigned int Dog::legs’ is a static data member; it can only be initialized at its definition
Dog::Dog(const unsigned int l) : legs(l) {
^
make[2]: *** [CMakeFiles/Caca.dir/Dog.cpp.o] Error 1
make[1]: *** [CMakeFiles/Caca.dir/all] Error 2
make: *** [all] Error 2
我一直在互联网上寻找一些静态 const int 的示例,它们以我使用它的方式工作,否则我可能会遗漏一些东西。我正在使用-std=c++11 进行编译。
【问题讨论】:
-
将变量标记为静态类成员意味着它独立于该类的具体对象。当您创建该类的多个对象时,您认为这应该如何工作?
-
在输入
main之前初始化变量,这将是困难的。您一定误解了您找到的示例。
标签: c++ c++11 constructor static constants