Доступ к функции-члену из вектора указателей? C ++

0

Итак, допустим, у меня есть вектор, vector<Item*> vItem и класс Item с функцией-членом Item::setValue(); , Позволяет также сказать, что я заполнил этот вектор, используя vItem.push_back(new Item).

Теперь для доступа к этой функции-члену через указатель в векторе будет vItem[0]->setValue("key"); , быть действительным? Я предположил, что это было, однако, когда я cout переменных - членов с помощью getValue() функции, ничего нового не возвращается, только значения по умолчанию из моего конструктора.

Есть идеи? Я чувствую, что это глупая ошибка в моей логике, но я не уверен. Любая помощь будет принята с благодарностью.

редактирует:

setValue code:

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++ с использованием стандарта С++ 0x), однако установщик просто не установлен.

Теги:
pointers
function
vector
member

1 ответ

0

Ваш getValue возвращает пустоту, и после getValue() в вашей реализации этого метода getValue(). Изменить на string Item::getValue(){return m_sValue;}

  • 0
    Мои извинения, я случайно установил это как недействительное здесь. Я правильно установил его как строку в реальной программе. Спасибо хоть
  • 0
    у вас еще есть точка с запятой. string Item::getValue();
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню