我有一个班级
class Para{
public:
int wrt, liczbaWystapien;
Para(int wrt, int liczbaWystapien){
this->wrt = wrt;
this->liczbaWystapien = liczbaWystapien;
}...
BST树模板,其中我有insert_helper函数和带有动态强制转换的错误
void insertHelper(Node<T>* node, T value){
if(value < node->key){
if(node->left == NULL)
node->left = new Node<T>(value);
else
insertHelper(node->left, value);
}
else if(value > node->key){//bez duplikatow bad z duplikatami
if(node->right == NULL)
node->right = new Node<T>(value);
else
insertHelper(node->right, value);
}else if (is_same<T, Para*>::value){
//cout<<"PARA fsaifhsaiohfoasihfaoih"<<endl;
dynamic_cast<BST<Para*>>(node)->key->wrt++;//HERE IS ERROR
}
}
树的内容是:
BST<Para*>* bstLicznosc;
如何纠正这种动态演员(我需要任何类型的演员)?
编辑:
当我使用时:
dynamic_cast<BST<Para*>*>(node)->key->wrt++;
我明白了:
Error 4 error C2683: 'dynamic_cast' : 'Node<T>' is not a polymorphic type
答案 0 :(得分:0)
您只能dynamic_cast
引用或指针类型,即BST<Para*>&
或BST<Para*>*
,而不是BST<Para*>
。
在您的情况下,BST<Para*>*
是正确的,因为node
是指针。
此外,node
必须是多态类型,即它必须具有虚函数(析构函数是一个很好的候选者)。