visual c++用户定义类型转换失败
visual C++ User-defined type conversion failure
template<typename T>
class Pack
{
private:
std::function<T()> _Func = nullptr;
public:
Pack()
{
}
Pack(std::function<T()> func)
: _Func(func)
{
}
~Pack()
{
}
operator T()
{
return _Func();
}
};
我用的是operator T
,我想隐式地调用_Func
,但我甚至不能显式地这样做。这似乎是正确的,但实际上错误C2440 @MSVC。我有两种用法:
类的静态成员(succeeded);
类成员(failed)
(我不知道这是否重要)
我真的很想知道为什么它以两种方式执行,更重要的是,我如何将它作为非静态成员放入我的类中并成功调用operator T
。
类成员:
struct test
{
test()
{
p_ = Pack<int>(std::bind(&test::foo, *this));
}
int foo()
{
std::cout << "test::foo" << std::endl;
return 5;
}
Pack<int> p_;
};
int main()
{
test t;
int x = t.p_;
return 0;
}
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++中的双指针类型转换
- 逐位操作的隐式类型转换
- 模板中的类型转换
- 在 C++(和 C)中进行类型转换时明显不一致
- 字符类型转换不兼容
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- C++:用户定义的显式类型转换函数错误
- 将类指针类型转换为键时出错
- 通过引用传递参数时C++类型转换
- 在 C++ 中将一个模板类型的对象类型转换为另一个模板类型
- XLL由XLW制造,BOOST UBLAS MyMatrix数据类型转换为双**失败
- OpenCV,dlib - 函数中的图像类型转换失败;在外面工作
- QFlags 枚举类型转换突然失败
- 对于具有不同位数的类型,LLVM 类型转换失败
- 指针算术编译失败,gcc指出类型转换无效
- c++中类类型转换失败
- 隐式类型转换编译失败,为什么?
- visual c++用户定义类型转换失败