C++で、クラスの中で、operator+()は普通にできるのに、
friend operator+()は、エラー1001がきます。なぜなのでしょうか?
ちなみに、friend operator*() は、普通にいきます。
サポされてないのでしょうか?(;;)
具体的にどんなコードをどのバージョンのコンパイラで組んだのかわからないと
なにがなんだかわからんが・・・
class hoge_t {
friend hoge_t operator+(const hoge_t&, int);
int x;
public:
hoge_t(int x0) : x(x0) {}
int get_value() const { return x; }
};
hoge_t operator+(const hoge_t& l, int r) {
return hoge_t(l.x+r);
}
int main() {
hoge_t x(0);
return (x+3).get_value();
}
いろんなコンパイラでまったく問題なし
質問はまともな日本語で書いてくれ
とりあえず、追加発言の所にある「使用上の注意」を読んでください。
最低限書く必要があることについてきちんと書いてあります。
あと、実際の自分のソースを提示した方が間違いを指摘してもらえる
可能性が高いので量がとんでもなく多いとかで無いなら提示した方が
話が早いです。
あまりにソースの量が多いなら状況を再現できる最小限のソースを
調べて、提示してください。
実は案外これをやっている最中に問題が解決したりして。
ぐぐってる?
http://support.microsoft.com/kb/403007/ja
http://support.microsoft.com/kb/315490/ja
http://hp.vector.co.jp/authors/VA014436/prg_memo/windows/vctips/031.html
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1053960&SiteID=7
ちょっと調べただけでこんなにでてくるよ
MSDN ライブラリー
http://msdn2.microsoft.com/ja-jp/library/y19zxzb2(VS.80).aspx
あとは、自分で調べてみてください。