我有一个结构
:
struct MyStruct {
const unsigned short *ptr = nullptr;
/* above pointer might also be:
const unsigned int *ptr = nullptr;
*/
// ...
};
我使用struct
作为类的成员:
class MyClass
{
// ...
private:
MyStruct m_struct;
}
在MyClass
的成员函数内部,我希望能够有一个像这样的开关:
void MyClass::myFunc()
{
// ...
switch(myDataType) {
case USHORT:
m_struct.ptr = reinterpret_cast<const unsigned short *>(myDataPtr);
break;
case UINT:
m_struct.ptr = reinterpret_cast<const unsigned int *>(myDataPtr);
break;
default:
break;
}
}
目前,由于类型不兼容,上述开关
无法实现。
我不知道如何使用正确的模板
定义我的struct
,以便我能够执行上述switch
关于类成员函数。
最佳答案
您可以将它们都设为类模板。那么就不需要使用switch
了。例如
template <typename T>
struct MyStruct {
const T *ptr = nullptr;
// ...
};
template <typename T>
class MyClass
{
// ...
private:
MyStruct<T> m_struct;
};
template <typename T>
void MyClass<T>::myFunc()
{
// ...
m_struct.ptr = reinterpret_cast<const T *>(myData);
}
关于c++ - 对结构成员使用泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57195660/