[英]Accessing a member function from a vector of pointers? C++
因此,假設我有一個向量vector<Item*> vItem
和一個具有成員函數Item::setValue();
的Item類Item::setValue();
。 還可以說我使用vItem.push_back(new Item)
填充了該向量。
現在,通過向量中的指針訪問該成員函數,將是vItem[0]->setValue("key");
。 有效嗎? 我以為是,但是當我使用getValue()
函數cout
成員變量時,沒有返回任何新內容,僅返回構造函數中的默認值。
有任何想法嗎? 我覺得這是我邏輯上的一個愚蠢錯誤,但我不確定。 任何幫助將不勝感激。
編輯:
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;
}
我還應該注意:一切都可以正常編譯(使用c ++ 0x標准的g ++),但是setter卻沒有設置。
您的getValue返回一個空值,並且在該方法的實現中,在getValue()
之后有一個分位的分號。 更改為string Item::getValue(){return m_sValue;}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.