#include
#include
#include
template
class slist :public std::list{
iterator itBeg;
iterator itEnd;
public:
SLIST& operator[] (const int &num){
iterator it = begin();
std::advance(it, num);
return *it;
}
//×
void operator+= (std::list &list){
merge(list);
}
void operator+= (SLIST &ele){
push_back(ele);
}
void operator+= (std::vector &arr){
for(size_t i=0;i &arr){
clear();
for(size_t i=0;i= (const int &num){
set(num);
}
void operator! (void){
reset();
}
SLIST& operator++ (void){
SLIST iterEle = *itBeg;
itBeg++;
return iterEle;
}
SLIST& operator-- (void){
SLIST iterEle = *itEnd;
itEnd--;
return iterEle;
}
void addArr(const SLIST *arr, const int num){
for(int i=0;i slst;
std::list lst;
slst.addArr(nums, 5); //slstにnumsのデータを追加
for(int i=0;i' に対して後置形式でない 'operator ++' が見つかりました。前置形式にします。
with
[
SLIST=int
]
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(64) : warning C4172: ローカル変数またはテンポラリのアドレスを返します。
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(61): クラス テンプレート のメンバ関数 'int &slist::operator ++(void)' のコンパイル中
with
[
SLIST=int
]
c:\documents and settings\administrator\my documents\visual studio 2008\projects\slist\main.cpp(83) : コンパイルされたクラスの テンプレート のインスタンス化 'slist' の参照を確認してください
with
[
SLIST=int
]
リンクしています...
マニフェストを埋め込んでいます...
ビルドログは "file://c:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\slist\Debug\BuildLog.htm" に保存されました。
slist - エラー 0、警告 2
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
83行目というのは
slist slst;
89行目というのは
for(int i=0;i<10;i++) printf("%d\n", slst++); //slstの要素を最初から最後まで表示
のことです。
ためしに89行目を
for(int i=0;i<10;i++) printf("%d\n", ++slst); //slstの要素を最初から最後まで表示
というように、"++"の位置を逆にしてみると、89行目に対する警告はなくなりました。
両方可能にはできないのでしょうか?