c – 有没有办法为任何指针类型定义转换运算符?
发布时间:2020-12-16 09:53:17 所属栏目:百科 来源:网络整理
导读:我有这门课: class fileUnstructuredView {private: void* view;public: operator void*() { return view; }}; 它可以做到这一点: void* melon = vldf::fileUnstructuredView(); 但它不能这样做: int* bambi = vldf::fileUnstructuredView();//orint* bam
我有这门课:
class fileUnstructuredView { private: void* view; public: operator void*() { return view; } }; 它可以做到这一点: void* melon = vldf::fileUnstructuredView(); 但它不能这样做: int* bambi = vldf::fileUnstructuredView(); //or int* bambi = (int*)vldf::fileUnstructuredView(); 相反,我必须这样做 int* bambi = (int*)(void*)vldf::fileUnstructuredView(); 或为int *创建另一个显式类型转换运算符. 关键是,我想轻松地将类转换为各种指针类型,包括所有基本类型和一些pod结构类型.有没有办法做到这一点,而无需为所有这些创建转换运算符?与我所能想到的最接近的是ZeroMemory方法,它的参数似乎没有任何类型. 解决方法
是的,您可以拥有转换功能模板.
template <class T> operator T*() { return static_cast<T*>(view); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |