c++ - 有没有办法为任何指针类型定义转换运算符?

标签 c++ pointers operator-keyword

我有这门课:

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

关于c++ - 有没有办法为任何指针类型定义转换运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24659851/

相关文章:

具有继承性的 C++ vector

c++ - 右值中的代理类 - 如何实现赋值运算符?

c++ - cin 使用新 C++ 的用户的字符数组

在函数中调用指针

c - 指向自身的指针

c++ - std::getline() 如何等同于 bool?

c++ - 我收到一个错误 [错误 : expected unqualified-id before ‘&’ token ] in a c++ program

opencv - opencv的mser的()运算符的使用方法

c++ - recv() 结果必须等于缓冲区长度吗?

c# - MarshalAs(UnmanagedType.ByValArray, SizeConst 大小限制