Какие операторы переопределить?
От: Аноним  
Дата: 15.08.14 10:12
Оценка:
typedef boost::variant< std::string, int >  var_t;

class A
{
public:
    virtual var_t foo() = 0;
}

class B : public A
{
public:
    virtual var_t foo()
    {
        return( int( ... ));
    }
}

class C : public A
{
public:
    virtual var_t foo()
    {
        return( string( ... ));
    }
}

A *p1, *p2;

p1 = new B();
p2 = new C();

// Внимание, вопрос!
// Какие операторы нужно переопределить, и как, чтобы можно было писать так:

int n = p1->foo();
string s = p2->foo();


?
Re: Какие операторы переопределить?
От: Abyx Россия  
Дата: 15.08.14 12:04
Оценка:
Здравствуйте, Аноним, Вы писали:

А>
А>// Внимание, вопрос!
А>// Какие операторы нужно переопределить, и как, чтобы можно было писать так:

А>int n = p1->foo();
А>string s = p2->foo();

А>


нужен промежуточный объект с

template<typename T>
operator T() {
    return get<T>(variant_var);
}
In Zen We Trust
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.