【发布时间】:2015-03-16 22:12:22
【问题描述】:
template <typename Type> struct testClass{
Type value;
};
int main(){
void* ptr = new testClass<int>;
ptr->value = 0;
return 0;
}
这不起作用,因为 void 指针不知道它指向什么类型,所以我必须将它转换为正确的数据类型。但是,我不确定如何为模板类执行此操作。
我试过了:
(ptr<testClass>)->value = 0;
但错误表明它在“>”之前缺少模板参数。我不确定如何将其转换为 testClass(int)
【问题讨论】:
-
static_cast<testClass<int>*>(ptr)->value = 0;完全避免 void 指针和强制转换...void avoid -
void 指针的原因是因为我正在尝试构建一个多类型链表,并且当指针遍历链表时,它们可能指向具有不同类型“值”的类,所以我不能真正指定指针类型