Как сделать указатель хранилища класса контейнера C++ на константу, но получить ее как неконстантную?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как сделать указатель хранилища класса контейнера C++ на константу, но получить ее как неконстантную?

Сообщение Anonymous »

У меня есть код, похожий на следующий. Очевидно, это урезанная версия.

Код: Выделить всё

struct Foo {
int bar;
Foo() : bar(0) {}
};

class Container {
Foo* foo;

public:
void put(const Foo* in_foo) {
foo = in_foo;
}

Foo* get() {
return foo;
}
};

int main()
{
Foo foo;
Container c;

c.put(&foo);

Foo* pFoo = c.get();
pFoo->bar = 3;
}
При запуске я получаю сообщение об ошибке:

main.cpp: В функции-члене 'void Container:: put(const Foo*)':
main.cpp:20:19: ошибка: недопустимое преобразование из 'const Foo*' в 'Foo*'
[-fpermissive]

См. https://onlinegdb.com/2SrlyGdQY.
Я хочу «пообещать», что не буду связываться с Фу при помещении в мой контейнер, но не заставлять Foo быть константой, когда пользователь возвращает его. Как лучше всего с этим справиться?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -non-const
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»