У меня все время возникает ошибка, которая имеет смысл, но я не знаю с чего начать.initialize struct with shared_ptr <void>
Вот что я работаю.
#include <memory>
struct Container {
int type;
std::shared_ptr<void> payload;
Container(int t, const void *p) : type(t), payload(p) { }
};
int main() {
return 0;
}
Я пытаюсь сделать общий контейнер, используя shared_ptr
с типом void
. Я собирался сделать переключатель типа, а затем просто перевести полезную нагрузку в соответствующий тип.
Я понял, что могу просто сделать что-то вроде Container ctn(1, new Data());
, но я думаю, что у меня может быть и это неправильно.
Спасибо.
Просто будьте счастливы, что эта проблема мешает вам идти вперед с этим дизайном. В качестве примера Бертран Мейер решил не поддерживать типы перечислений в Эйфеле, просто чтобы предотвратить ваш дизайн. Это так плохо, экстремальный анти-шаблон, совершенно противоположный объектно-ориентированным. Теперь забудьте о указателях 'void *'. Используйте стандартный контейнер библиотеки. –
'Я пытаюсь создать общий контейнер с помощью shared_ptr' Ok. 'с типом void', который был решен с помощью шаблонов - отбросьте' void * '. C++ не 'C'. – PaulMcKenzie