0

所以,假设我有一个向量 vector<Item*> vItem和一个带有成员函数的 Item 类Item::setValue();。还可以说我使用vItem.push_back(new Item).

现在,要通过向量中的指针访问该成员函数,将vItem[0]->setValue("key");. 有效吗?我以为是这样,但是当我cout使用getValue()函数的成员变量时,没有返回任何新内容,只有构造函数中的默认值。

有任何想法吗?我觉得这是我的逻辑中的一个愚蠢的错误,但我不确定。任何帮助将不胜感激。

编辑:

设置值代码:

void Item::setValue(string sValue)
{
        m_sValue = sValue;
}

使用私有变量:

string m_sValue;

获取值代码:

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 只是没有设置。

4

1 回答 1

0

Your getValue returns a void and there's an out-of-place semi-colon after getValue() in your implementation of that method. Change to string Item::getValue(){return m_sValue;}

于 2013-10-07T02:29:11.953 回答