我有一個具有靜態常量無符號整型變量的類。我想根據程序啓動時傳遞的參數來初始化這個變量。我創建了一個我想要做的事情的例子,試圖找出如何實現這一點。將值設置爲靜態常量unsigned int
的main.cpp
int main() {
const unsigned int legs = 4;
Dog dog(legs);
return 0;
}
Dog.h
class Dog {
public:
Dog(const unsigned int legs);
~Dog();
private:
static const unsigned int legs;
};
Dog.cpp
Dog::Dog(const unsigned int l) : legs(l) {
}
Dog::~Dog() {
}
在主,我創建的變量,以模擬值從程序傳遞當它運行時。
編譯器提供了以下錯誤:
/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」被輸入之前被初始化,所以這會很困難。你一定誤解了你找到的例子。 – molbdnilo