enum Type { Reference, Data };
class Node {
private:
std::shared_ptr<Node> m_next{};
enum Type m_type;
union Information {
std::string data;
std::shared_ptr<Node> son;
} m_info;
public:
Node(std::string data);
Node();
void setNext(std::shared_ptr<Node> next);
std::shared_ptr<Node> getNext();
enum Type getType();
std::shared_ptr<Node> getSon();
std::string getData();
};
Имеется код подобного содержания. Класс, в зависимости от m_type должен содержать либо строку в m_info, либо ссылку на такую же ноду.
Компилятор ругается на отсутствие конструктора/деструктора для union'а. Как правильно делается?