Объявление условной переменной

Я исхожу из Python, и у меня есть некоторые проблемы с управлением типами в c ++. В Python я могу сделать что-то вроде этого:

if condition_is_true:
    x=A()
else:
    x=B()

а в остальной части программы я могу использовать x, не заботясь о типе x, учитывая, что я использую методы и переменные-члены с тем же именем и аргументами (не обязательно, чтобы A и B имеют одинаковые базовые классы). Теперь в моем коде C ++ тип A соответствует

typedef map<long, C1> TP1;

, а B -:

typedef map<long, C2> TP2;

, где:

typedef struct C1
{
    char* code;
    char* descr;
    int x;
...
}

и

typedef struct C2
{
    char* code;
    char* other;
    int x;
...
}

C1 и C2 имеют похожие члены, а в той части кода, о которой я говорю, мне нужно использовать только те, с тем же именем / типом

Я хотел бы сделать что-то вроде:

if (condition==true)
{
    TP1 x;
}
else
{
    TP2 x;
}

каков правильный подход в C ++?

заранее спасибо

5
задан JK. 26 July 2011 в 08:56
поделиться