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();
?
Здравствуйте, Аноним, Вы писали:
А>А>// Внимание, вопрос!
А>// Какие операторы нужно переопределить, и как, чтобы можно было писать так:
А>int n = p1->foo();
А>string s = p2->foo();
А>
нужен промежуточный объект с
template<typename T>
operator T() {
return get<T>(variant_var);
}