【发布时间】:2011-02-23 13:10:43
【问题描述】:
假设我有:
class TypeA { };
class TypeB { };
typedef boost::variant<TypeA, TypeB> Type;
-
没关系:
void foo(Type t) { }; int main(){ TypeA a; foo(a); } -
这不会编译:
void foo(Type &t) { }; int main(){ TypeA a; foo(a); }出现错误:
“Type&”类型的引用初始化无效 “TypeA”类型的表达式
-
这也不编译:
void foo(Type *t) { }; int main(){ TypeA a; foo(&a); }出现错误:
无法将参数“1”的“TypeA*”转换为“Type*”到“void” foo(类型*)'
有没有办法通过引用(如案例 2)或指针(如案例3)?
非常感谢!
【问题讨论】:
标签: c++ pass-by-reference boost-variant