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
564

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:segmentfault手机版真的跟屎一样啊,捏着鼻子用了这么久,才发现居然不能输入大于号小于号

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!