我正在尝试实现一个 C++ 方法,并希望在其中传递一个泛型参数。我只想将该参数分配给对象的属性。这是一个例子:
class Myclass {
public:
unsigned long long var1;
unsigned short var2;
signed short var3;
}
Run Code Online (Sandbox Code Playgroud)
现在我在 SomeOtherClass 中有一个 Myclass 的全局对象,并且方法如下:
void SomeOtherClass::updateMyClassValue(int paramType, <Generic> value) {
switch(paramType) {
case1:
objMyClass.var1 = value;
case2:
objMyClass.var2 = value;
case3:
objMyClass.var3 = value;
}
}
Run Code Online (Sandbox Code Playgroud)
如何传递这样的类型,因为如果我使用固定类型(例如unsigned long long作为参数类型),我将无法将其分配给 var2 和 var3。我也不想丢失数据,例如签名数据可能具有-ve 值。
请帮助我克服这种情况,我没有 C++ 工作经验。我不确定是否可以在 C++ 中使用 templatete<> 来实现这一点,如果可以,那么如何实现?
谢谢
一种方法是通过函数重载:
template <class T>
void updateMyClassValue(T value) {
//assert, or log message, or nothing, if not needed you can remove this function
}
void updateMyClassValue(unsigned long long value) {
var1 = value;
}
void updateMyClassValue(unsigned short value) {
var2 = value;
}
void updateMyClassValue(signed short value) {
var3 = value;
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用类似boost::any 的类型。
| 归档时间: |
|
| 查看次数: |
21339 次 |
| 最近记录: |