2012-03-17 20 views
0

関数定義エラーを引き起こすC++演算子=機能

const circularLinkedList<Tp>& operator=(const circularLinkedList<Tp>& otherList); 

線上GCCエラー、エラーメッセージが327行を参照、nodeTypeので開始....

template <class Tp> 
nodeType<Tp>* circularLinkedList<Tp>&::operator=(const circularLinkedList<Tp>& otherList) 

およびエラーGCCコンパイラからのメッセージは以下のとおりです。

circularLinkedList.h:327: error: invalid declarator before â&â token 
circularLinkedList.h:327: error: expected initializer before â&â token 

私は、このメソッドのsomewhを定義するには、構文エラーのいくつかの並べ替えを行っていることを前提としていere。どうすればそれを修正する必要がありますか?ありがとう。

+0

は、単に奇妙なエンコードされた引用符で囲まれた '&' 'トークンA&A'トークンですか? –

+0

@ MrLister - そうだと思います。問題をコピー/ペーストする可能性があります。 –

+2

&before ::演算子が間違っていませんか? – abresas

答えて

2

もう少しコードを投稿できますか? nodeTypeの種類を説明できますか?

関数定義などは、以下のルックス:

template <class Tp> 
nodeType<Tp>* circularLinkedList<Tp>&::operator=(const circularLinkedList<Tp>& otherList) 

しかし、一つには、宣言は、それがconst circularLinkedList<Tp>&を返すと言います。 また、::の前に&を付けたくありません。型の名前でなければならず、その型の変数へのポインタや参照ではありません。その振る舞いが必要な場合は、プロキシクラスを使用する必要があります。 がほとんど必ず最初のコードブロックでreturn *this;

+0

関数定義であり、* thisを返します。しかし、実際にはその行で修正しました。関数定義を正しく取得する方法がわからず、答えが出るまで機能しませんでした。ありがとう! – rfmas3

0

で終了する必要が

template <class Tp> 
const circularLinkedList<Tp>& circularLinkedList<Tp>::operator=(const circularLinkedList<Tp>& other) 

、あなたはメソッド宣言ではなく、関数定義を示しています。

だから、のようなものがあるべき。 2番目のコードブロックには、メソッド定義のヘッダーが表示されます。

メソッド宣言: 返しconst circularLinkedList<Tp>&

メソッド定義:nodeType<Tp>*を返し 。

宣言したメソッドが定義されていません。 宣言していないメソッドを定義しています。

定義のヘッダは次のようになります。

const circularLinkedList<Tp>& circularLinkedList<Tp>::operator=(const circularLinkedList<Tp>& otherList)