1

このメソッドの宣言/説明の間違いを教えてください。

class Set
{
    struct Node {
        // ...
    };
    // ...
    Node* &_getLink(const Node *const&, int) const;
    // ...
};

Node* &Set::_getLink(const Node *const &root, int t) const
{
    // ...
}

間違いは見当たりませんが、コンパイラ (MS VS C++) は多くの構文エラーを出します。

4

3 に答える 3

3

の名前を完全修飾するのを忘れましたNode(これは のスコープで定義されていますSet):

    Set::Node* &Set::_getLink(const Node *const &root, int t) const
//  ^^^^^

Node完全な修飾がない場合、コンパイラは、存在しないという名前のグローバル型を探します。

于 2013-04-13T13:26:30.020 に答える
0

グローバルスコープで Node を定義し
ないので、このコードを使用してください

//by Set::Node we give compiler that this function exist in class Node
Set::Node* &Set::_getLink(const Node *const &root, int t) const
{
   // ...
}
于 2013-04-13T13:30:56.497 に答える
0

問題はスコーピングです。Nodeここにプレフィックスを付ける必要があります。

Set::Node* &Set::_getLink(const Node *const &root, int t) const
{
    // ...
}

実際、Nodeは遭遇した時点では不明です ( のスコープ内ではなく、名前空間Setのスコープにいます)。次のものも使用できますauto

auto Set::_getLink(const Node *const &root, int t) const -> Node *&
{
    // ...
}

の後->、あなたはSetの範囲内にあり、Node知られています。

于 2013-04-13T13:26:37.647 に答える