list<int> myList;
myList.push_back(1);
int num = myList[0];
という風に、添字を使って要素にアクセスできたら便利なのに。と思ったのでつくることにしたのですが、コンパイルエラーが出て解決できません。
※私が今までに使ったことがあるC++独自の文法はリファレンスとコンテナクラスだけです。
classを宣言したのは初めてです。あとテンプレートを宣言したのも初めてです。もちろん演算子オーバー
ロードを宣言したのも初めてです。参考書をガン見しながら書きました。
以下ソースコード
#include <list>
template <typename SLIST>
class slist{
public:
std::list<SLIST> myList;
SLIST& slist::operater[] (const int &num){
std::list<SLIST>::iterator it = myList.begin();
for(int i=0;i<num;i++) it++;
return *it;
}
};
------ ビルド開始: プロジェクト: slist, 構成: Debug Win32 ------
コンパイルしています...
main.cpp
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(8) : error C2092: 'operater' 配列の要素の型は関数にできません。
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(13) : コンパイルされたクラスの テンプレート のインスタンス化 'slist<SLIST>' の参照を確認してください
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(8) : error C2473: 'operater' : 関数定義のようですが、パラメータ リストがありません。
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(9) : warning C4346: 'std::list<SLIST>::iterator' : 依存名は型ではありません。
'typename' を持つプレフィックスは型を示します。
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(9) : error C2146: 構文エラー : ';' が、識別子 'it' の前に必要です。
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(9) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(9) : error C2864: 'slist<SLIST>::it' : static const int データ メンバ以外をクラス内で初期化することはできません
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(10) : error C2059: 構文エラー : 'for'
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(10) : error C2143: 構文エラー : ')' が ';' の前にありません。
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(10) : error C2238: ';' の前に無効なトークンがあります。
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(10) : error C2143: 構文エラー : ';' が '<' の前にありません。
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(10) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(10) : error C2238: ';' の前に無効なトークンがあります。
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(10) : error C2143: 構文エラー : ';' が '++' の前にありません。
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(10) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(10) : error C2059: 構文エラー : ')'
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(10) : error C2238: ';' の前に無効なトークンがあります。
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(11) : error C2059: 構文エラー : 'return'
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(11) : error C2238: ';' の前に無効なトークンがあります。
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(13) : error C2143: 構文エラー : ';' が '}' の前にありません。
ビルドログは "file://c:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\slist\Debug\BuildLog.htm" に保存されました。
slist - エラー 18、警告 1
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
ご教授よろしくお願い致します。