所以,假设我有一个向量 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 只是没有设置。