Не удается инициализировать объединение в C ++ 11 - PullRequest
0 голосов
/ 22 декабря 2018

Я не могу инициализировать объединение в std :: pair.

У меня есть этот тип typedef

enum EValueType
{
    Int,
    Double,
    Variable,
    Unknown
};

union UValueContainer
{
    int __int;
    double __double;
    double* __variable;
};

typedef std::pair<EValueType, UValueContainer> variant;

, и у меня есть базовый класс с конструктором, который получает атрибутvariant type

class fooBase
{
    fooBase(variant attribute);
    ...
}

и производный класс с конструктором, который должен инициализировать аргумент конструктора базового класса.

class fooDerived : public fooBase
{
    fooDerived(double* value) : fooBase({Variable, UValueContainer{.__variable = value}}
}

Как я могу это сделать?

1 Ответ

0 голосов
/ 22 декабря 2018

Как @DeiDei прокомментировал мой пост - я объявил / определил конструкторы для каждого типа.Теперь проблема решена.Но я хочу быть уверен, что нет другого пути решения этой проблемы.

...