0

g++ コンパイラは、次のステートメントが間違っていることを示します。

template<typename Type>
class SingleList{
public:
    SingleList()
        {
            head =  new SingleListNode<Type> () ;    //Error happens here!!!
        }

エラーメッセージは次のとおりです。

 ./inc/single_list.h: In instantiation of ‘SingleListNode<int>’:
./inc/single_list.h|39 col 13| instantiated from ‘SingleList<Type>::SingleList() [with Type = int]’

の定義headは以下の通りですが、ここでは問題ないかもしれません。

SingleListNode<Type> *head;

関数内のクラスのインスタンス化は次のとおりSingleListです。main

int main()
{
    SingleList<int> list;

構文エラーが発生する場所がわかりません。誰か助けてもらえますか? ありがとう!!

================================================== ======================

ソースファイルの内容は次のとおりです。

    template<typename Type> class SingleList;

template<typename Type> class SingleListNode{
private:
    friend class SingleList<Type>;

    SingleListNode() : next(NULL){}

public:
    friend ostream& operator<< <Type>(ostream& os,SingleListNode<Type>& sln);             //Error here!!

private:
    SingleListNode *next;
};

template<typename Type> ostream& operator<<(ostream& os,SingleListNode<Type>& out){
    os<<out.data;
    return os;
}

template<typename Type> class SingleList{
public:
    SingleList()
        {
            head =  new SingleListNode<Type> () ;              //Error happens here.
        }
    ~SingleList(){
        delete head;                                       //Same error
    }

private:
    SingleListNode<Type> *head;
};

g++ によって表示されるエラー メッセージ

|| g++ -g -I ./inc/ -c single_list_test.cpp  -o single_list_test.o
|| single_list.h: In instantiation of ‘SingleListNode<int>’:
single_list.h|25 col 13| instantiated from ‘SingleList<Type>::SingleList() [with Type = int]’
single_list_test.cpp|9 col 18| instantiated from here
single_list.h|10 col 18| error: template-id ‘operator<< <int>’ for ‘std::ostream& operator<<(std::ostream&, SingleListNode<int>&)’ does not match any template declaration
|| make: *** [single_list_test.o] Error 1
4

1 に答える 1

1

私の gcc に対して、次のステートメントを変更するだけです

friend ostream& operator<< <Type>(ostream& os,SingleListNode<Type>& sln)

 friend ostream& operator<< (ostream& os,SingleListNode<Type>& sln)
于 2012-05-26T04:21:17.407 に答える