使用 boost::variant 调用模板类函数
use boost::variant to call template class functions
我有一个模板类
template <T>
class class1
{
template< typename T1, typename T2>
void func1 ()
{ // do somthing }
template< typename T1>
void func2 ()
{ //do something }
};
class class2
{
// Have three objects based on template type
public:
class2 ()
{
if (case1)
obj = class1<type1> ;
else if (case2)
obj = class1<type2>;
else if (case3)
obj = class1<type3>;
}
void fun1 ()
{ obj->func1(); } //calling class1 function based on template type
void func2 ()
{ obj->func2(); } //
typedef boost::variant <class1<Type1>, class1 <type2>, class1 <type3>> obj1;
obj1 obj;
};
如何使用 boost::variant 调用 class1 函数。无法创建虚拟类,因为无法创建模板化的虚拟函数,我需要根据模板类型创建一个对象,以避免每个函数中的其他对象。
使用采用任何类型(模板operator()
)的访问者:
boost::apply_visitor([](auto& x){ x.func1(); }, obj);
相关文章:
- 如何通过派生类函数更改基类中的向量
- 库函数需要一个 std::function<void(void)>,如何传入类函数?
- 在类函数中初始化外部作用域变量
- c++ 在非类函数中使用类变量
- SDL_PollEvent() 无法捕获类函数内部SDL_QUIT?
- 从类成员函数到类 C 函数指针的转换
- 如何在模板类函数中分配结构值?
- 有没有办法将重载的类函数绑定到函数对象?
- 启动类函数作为失去引用的线程
- C++调用使用重写函数的父类函数
- 将值传递到另一个类函数在打印时为零
- 计算对类函数的所有调用次数
- 由于签名差异,调用了错误的子类函数
- 使用宏调用类函数
- 虚拟基类函数中派生类的大小
- 模板类/函数中的交叉前向声明
- 在C++中使用非静态类函数的函数
- 无法访问基类函数 C++
- 类函数返回到另一个类函数返回打印不同的值
- 使用 boost::variant 调用模板类函数