所以,可以說我有一個矢量,vector<Item*> vItem
和一個帶有成員函數Item::setValue();
的Item類。讓我們也說我通過使用vItem.push_back(new Item)
填充該矢量。從指針向量訪問成員函數? C++
現在,要訪問該成員函數,通過向量中的指針,將vItem[0]->setValue("key");
。有效嗎?我認爲這是,但是當我cout
成員變量使用getValue()
函數,沒有新的返回,只有來自我的構造函數的默認值。
任何想法?我覺得在我的邏輯中這是一個愚蠢的錯誤,但我不確定。任何幫助將不勝感激。
EDITS:
的setValue代碼:
void Item::setValue(string sValue)
{
m_sValue = sValue;
}
與私有變量:
string m_sValue;
的getValue代碼:
string Item::getValue()
{
return m_sValue;
}
代碼的簡單版本:
void func2(vector<Item*>& vItem)
{
vItem.push_back(new Item);
vItem[0]->setValue("key");
}
int main(int argc, char * argv[])
{
vector<Item*> vItem;
func2(vItem);
cout << vItem[0]->getValue() << endl;
return 0;
}
我還應該注意:一切都編譯得很好(g ++使用C++ 0x標準),但是setter只是沒有設置。
您的描述聽起來正確。你能發佈setValue代碼嗎? – billz
嘗試將其簡化爲大約10行代碼,顯示插入,對setValue的調用,所有對getValue的調用,Item的代碼以及您看到的行爲。以這種方式幫助發現問題會容易得多。 –
@billz添加了setValue代碼。也要添加一個簡單的版本。 – Nick