2

クラス内で宣言された構造体へのポインターを返すコードに問題があります。これまでの私のコードは次のとおりです。

SortedList.h

#ifndef SORTEDLIST_H
#define SORTEDLIST_H

class SortedList{

 public:

    SortedList();

 ...

 private:

    struct Listnode {    

      Student *student;

      Listnode *next;

    };

    static Listnode *copyList (Listnode *L);

};

#endif

SortedList.cpp

#include "SortedList.h"

...

// Here is where the problem lies

Listnode SortedList::*copyList(Listnode *L)

{

    return 0; // for NULL

}

どうやら、コピー リスト メソッドはコンパイルされません。Microsoft Visual Studio を使用していますが、コンパイラから「Listnode」が不明であると表示されます。コンパイルしようとすると、次のようになります。

1>------ Build started: Project: Program3, Configuration: Debug Win32 ------

1>  SortedList.cpp

sortedlist.cpp(159): エラー C2657: 'SortedList::*' がステートメントの先頭に見つかりました (型の指定を忘れましたか?)

sortedlist.cpp(159): エラー C4430: 型指定子がありません - int と見なされます。注: C++ は default-int をサポートしていません

sortedlist.cpp(159): エラー C2065: 'L': 宣言されていない識別子

sortedlist.cpp(159): エラー C4430: 型指定子がありません - int と見なされます。注: C++ は default-int をサポートしていません

sortedlist.cpp(159): 致命的なエラー C1903: 以前のエラーから回復できません。コンパイルの停止

========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

助けていただければ幸いです...できるだけ早く

4

1 に答える 1

2

cpp ファイル内で、関数を次のように定義する必要があります。

SortedList::Listnode* SortedList::copyList(ListNode* L)
{
    return 0; //For NULL
}

また、 は、または の外struct Listnodeで宣言する必要があります。publicclass SortedList

于 2012-11-13T04:56:46.453 に答える