visual-studio - Lors de l'écriture d'un arbre binaire en C++, l'utilisation de modèles et la définition de classes amies génèrent une erreur.
迷茫
迷茫 2017-05-16 13:29:03
0
1
669

Description du problème

Comme le titre l'indique, j'ai récemment appris les structures de données et les implémenté en C++. J'ai rencontré les problèmes suivants lors de l'implémentation d'un arbre binaire.

Dans le code du livre, l'arbre binaire se compose de deux structures de donnéesBinaryTreeBinartTreeNode, et toutes deux utilisent des modèles, comme suit :

template <class T>
class BinaryTreeNode{
friend class BinaryTree<T>;
private: 
    T data;
    BinaryTreeNode<T> *left;
    BinaryTreeNode<T> *right;
    /*...其他...其他...其他...*/
}

template <class T>
class BinaryTree{
private: 
    BinaryTreeNode<T> root;
    /*...其他...其他...其他...*/
}

Mais j'ai rencontré l'erreur suivante lors de sa mise en œuvre :

Exemple de code :

template <class T>
class BinaryTreeNode {
friend class BinaryTree<T>; /* 消除该句后可通过编译 */
private:
    T info;
    BinaryTreeNode<T> left;
    BinaryTreeNode<T> right;
};
template <class T>
class BinaryTree {
private:
    BinaryTreeNode<T> *root;
};

Erreur :

1>e:itc++binarytreebinarytreemybianrytree.h(20): error C2989: “BinaryTree”: 类 模板 已经声明为非类 模板

erreur c2989

Capture d'écran :

Environnement :

visual studio 2017 + win10 (mac double système)

Désolé tout le monde ! !

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(1)
曾经蜡笔没有小新
template <class T> class BinaryTree; // 加一个前置声明

template <class T>
class BinaryTreeNode {
friend class BinaryTree<T>; /* 消除该句后可通过编译 */
private:
    T info;
    BinaryTreeNode<T> left;
    BinaryTreeNode<T> right;
};
template <class T>
class BinaryTree {
private:
    BinaryTreeNode<T> *root;
};

ps : La version mobile de segmentfault est vraiment une merde. Après m'être tenu le nez et l'avoir utilisée pendant si longtemps, j'ai réalisé que je ne pouvais pas saisir le signe supérieur ou inférieur à 

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal