visual-studio – Beim Schreiben eines Binärbaums in C++ führt die Verwendung von Vorlagen und das Festlegen von Freundklassen zu einem Fehler.
迷茫
迷茫 2017-05-16 13:29:03
0
1
643

Problembeschreibung

Wie der Titel schon sagt, habe ich kürzlich Datenstrukturen gelernt und sie in C++ implementiert. Bei der Implementierung eines Binärbaums sind die folgenden Probleme aufgetreten.

Im Code im Buch besteht der Binärbaum aus zwei DatenstrukturenBinaryTreeBinartTreeNode, und beide verwenden Vorlagen wie folgt:

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;
    /*...其他...其他...其他...*/
}

Aber bei der Implementierung ist mir der folgende Fehler aufgefallen:

Beispielcode:

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;
};

Fehler:

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

Fehler c2989

Screenshot:

Umgebung:

Visual Studio 2017 + Win10 (Mac-Dual-System)

Entschuldigung für die Störung! !

迷茫
迷茫

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

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

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!