我正在尝试实现一个 C++ 方法并希望在其中传递一个通用参数。我只想将该参数分配给对象的属性。下面是一个例子:class Myclass {public: unsigned long long var1; unsigned short var2; signed short var3;}现在我在 SomeOtherClass 中有一个 Myclass 的全局对象,一个方法说:void SomeOtherClass::updateMyClassValue(int paramType, <Generic> value) { switch(paramType) { case1: objMyClass.var1 = value; case2: objMyClass.var2 = value; case3: objMyClass.var3 = value; }}如何传递这种类型,因为如果我使用固定类型,例如 unsigned long long 作为参数类型,我将无法将其分配给 var2 和 var3。我也不想丢失数据,例如签名数据可能具有 -ve 值。请帮助我克服这种情况,我没有使用 C++ 的经验。我不确定我是否可以在 C++ 中使用 tempte 来实现这一点,如果是,那么如何实现?谢谢 最佳答案 通过指针传递参数:void SomeOtherClass::updateMyClassValue(int paramType, void* pValue) { switch(paramType) { case1: objMyClass.var1 = *(unsigned long long*)pValue; case2: objMyClass.var2 = *(unsigned short)pValue; case3: objMyClass.var3 = *(signed short)pValue; }这当然不是类型安全的,当您不小心指定了错误的 paramType 时,您可能会遇到很多麻烦。如果您改用成员模板函数,则可以让编译器为您做一些检查,例如:template<type T>void SomeOtherClass::updateMyClassValue<short int>(T value) { objMyClass.var2 = value;}更优雅和类型安全。关于c++ - 将 C++ 方法中的泛型类型作为参数传递,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31177119/
10-11 22:59