0

我有一堂课

class Para{
public:
    int wrt, liczbaWystapien;
    Para(int wrt, int liczbaWystapien){
        this->wrt = wrt;
        this->liczbaWystapien = liczbaWystapien;
    }...

还有我有 insert_helper 函数的 BST 树模板和动态转换的错误

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   
4

1 回答 1

0

您只能dynamic_cast引用或指针类型,即 toBST<Para*>&或 to BST<Para*>*,而不是 to BST<Para*>

在你的情况下,BST<Para*>*是正确的,因为node是一个指针。

此外,node它必须是多态类型,即它必须有一个虚函数(析构函数是一个很好的候选者)。

于 2013-04-30T00:43:07.393 回答