2012-05-21 19 views
0

在使用結構項目:C++ char * const的VS字符*,爲什麼有時一個有時其他

struct item 
{ 
    item(); 
    ~item(); 
    char * name; 
    char * effect1; 
    char * effect2; 
    char * effect3; 
    char * effect4; 
    int count; 
}; 

與構造:

item::item() 
{ 
    name = NULL; 
    effect1 = NULL; 
    effect2 = NULL; 
    effect3 = NULL; 
    effect4 = NULL; 
    count = 0; 
} 

鼠標懸停在名稱顯示:

char* name() const 

同時懸停在任何效果顯示上:

char* effectx 

我想知道爲什麼會發生這種情況,因爲我認爲差異在我的程序的其他方面造成了問題。謝謝。

+5

你說你「*懸停在名字*上」。當你將鼠標懸停在名字上時,你正在使用什麼程序?代碼編輯器?一個IDE?哪一個? –

+1

聽起來就像系統中的怪癖。你有沒有叫'name()'的函數? –

+0

@hmjd除item()和〜item之外,沒有項目沒有成員函數。 – Flexo1515

回答

1

我不認爲你所提交的聲明與IDE所看到的代碼非常相似。處理這個問題的一個好方法是將代碼複製到單獨的工作文件中(在單獨的項目中),並將所有代碼(聲明和示例代碼都顯示問題)移動到同一個文件中。然後刪除代碼中無關的部分,以便慢慢走向最小,最精簡的示例,它仍然會顯示您的問題。

然後發佈該代碼作爲您的問題的更新。

同時,你沒有正確定義你的構造函數。那是對的,但不是最好的風格。不要在構造函數的主體中初始化成員,像這樣初始化它們:

item::item() : 
name(NULL), effect1(NULL), effect2(NULL), effect3(NULL), effect4(NULL), count(0) 
{ 
    /* nothing in the body. */ 
} 
相關問題