Невозможно преобразовать указатель this из ошибки const Foo в ошибку Foo &

0

Привет всем У меня есть класс Foo, имеющий переменную члена fooAddress

Код в foo.h

Class Foo
{
String fooAddress() const;
void setFooAddress(String fooAddress)
....
String m_fooAddress;
} 

Код в foo.cpp

String Foo::fooAddress() const
{
return m_fooAddress;
}

void Foo::setFooAddress(String fooAddress)
{
m_fooAddress = fooAddress;
}

Теперь у меня есть класс FooList, который имеет список foos

Код в FooList.h

class FooList
{
 editFooList(Foo foo,int index);
 ...
 private:
 List<Foo> m_fooArray; 
 }

Теперь мой код в FooList.cpp

void FooList::editFooList(Foo foo, int index)
{
m_fooArray.at(index).setFooAddress(foo.fooAddress());
}

но я получаю ошибку: C2662: 'void Foo :: setFooAddress (String)': не может преобразовать 'this' указатель из 'const Foo' в 'Foo &'

Поскольку я не определил editFooList как функцию const, я не уверен, почему компилятор жалуется, когда я пытаюсь изменить m_fooArray.Can кто-то, пожалуйста, укажите мне, что я делаю неправильно?

  • 2
    Точно ли воспроизведен ваш C ++ в этой публикации? В вашем коде есть foo:: а не Foo:: . Также я вижу QString а не String местами. Вы используете Qt вместо STL?
  • 0
    также "editFooList (foo foo, int index);" не должен компилироваться.
Показать ещё 6 комментариев
Теги:
c++11
const

1 ответ

0

я изменил свой код на

void FooList::editFooList(Foo foo, int index)
{
m_fooArray[index].setFooAddress(foo.fooAddress());
}

и теперь он компилируется

  • 0
    Это скопирует объект foo, который кажется не очень эффективным.

Ещё вопросы

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