加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读