在C++中,如何創建一個變量常量,然後在構造函數中賦值給它?我想這樣做的原因是因爲我試圖使用數據驅動設計,將所有數據放入XML文件中,然後將該數據加載到變量中。問題是我無法加載初始化列表中的值,因此我必須在構造函數(或其他地方)中執行此操作,但這些變量不是常量。分配給構造函數中的常量變量?
下面是一個XML文件:
<weapons>
<pistol>
<damage>5.0</damage>
...
</pistol>
...
</weapons>
然後我有一個類,如:
頭
class Weapon
{
public:
Weapon();
const float damage;
};
源
#include "Weapon.h"
Weapon::Weapon()
{
//load damage value into damage variable
}
由於損傷變量是不斷我可以'在構造函數中只對initializer列表做任何事情,但顯然我不能執行代碼,比如在初始化程序列表中讀取XML文件。所以,即使變量永遠不會改變,我應該不讓它保持不變或者有沒有一種正確的方法讓它保持不變,並做我所需要的?
爲什麼你不能在初始化列表中執行那樣的代碼?只需編寫一個免費的常規函數(最好在Weapon.cpp中的匿名名稱空間中),解析出損壞值並將其返回。然後,在初始化損壞變量時,您可以在啓動器列表中調用該函數。哦,請把它變成私人的。 – rohitsan 2013-04-29 00:34:45
是的,我其實沒有考慮到我的評論接受答案。是的,我會把它變成私人的。 – ProgrammerGuy123 2013-04-29 01:05:44
可能重複[在構造函數中這個奇怪的冒號成員語法是什麼?](http://stackoverflow.com/questions/1711990/what-is-this-weird-colon-member-syntax-in-the-constructor ) – 2013-04-29 04:24:57