簡體   English   中英

從指針向量訪問成員函數? C ++

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM