電子書籍の厳選無料作品が豊富!

タイトル通りではないかもしれないですが、
以下のソースで、「x()」を使わずに、「xx()」を使用するにはどうすればよいでしょうか?
説明不足ですが、どういえば言いのか判らないので、
うまく表現できないです。
要するに、「x()」の一階層上の「xx()」でアクセスがしたいのです???...

#include<iostream>
using namespace std;

class data
{
public:
struct list
{
int m;
int n;
list operator +(list &dat);
list operator -(list &dat);
int x(){return m;}
} li;
intxx()
{
data::list cd;
return cd.m;
}
};
data::list data::list::operator +(data::list &dat)
{
list tmp;
tmp.m=tmp.n=dat.m+dat.n;
return tmp;
}
data::list data::list::operator -(data::list &dat)
{
list tmp;
tmp.m=tmp.n=dat.m-dat.n;
return tmp;
}
int main()
{
data dat1,dat2;
dat1.li.m=10;
dat1.li.n=79;
dat2.li=dat1.li+dat1.li;
cout << dat2.xx();
cout << dat2.li.x();
while(1){}return 0;
}

大変申し訳ありませんが、よろしくお願いします。
また、何か上手な記述がありましたら、ご教授ください。

A 回答 (4件)

>ところで、「li.m」の「m」が「.」を押しても出ないのですが、


>なぜでしょうか?

よくわかりませんが、たまに候補が出ないことがあります。
そういうものと思っていたほうがいいでしょう。
    • good
    • 0
この回答へのお礼

わかりました。ありがとうございました。
お手数掛けました。

お礼日時:2004/03/08 16:57

>ところで、「li.m」の「m」が「.」を押しても出ないのですが、


>なぜでしょうか?

経験上、プロジェクトを閉じて、「.ncb」のファイルを削除すると回復する場合があります。
VC++6.0の場合。
    • good
    • 0
この回答へのお礼

ありがとうございました。
わかりました。

お礼日時:2004/03/08 16:58

>に変更しましたら無事通りました。



あのう、”通る”というと、コンパイルが通るとか、
処理が通るといったことを考えるんですけど。

相手に理解してもらいたいのでしたら「正常に動作した」という
意味では使わないほうがいいですよ。


>li.m→ここで、「.」を押してもmが出てこなかったので、
>無視していたようでした。
>ありがとうございました。
>ところで、「li.m」の「m」が「.」を押しても出ないのですが、
>なぜでしょうか?

?????????
出るってなにが?
いきなり突拍子もないことを言わないでください。

もしかして、VisualStudioをお使いで、IntelliSenseのことをいってますか?
http://www.itmedia.co.jp/dict/os/kind/windows/pr …


>m n を同一の変数内で、足し算をしたかったのです。
>while(1){}return 0;
>は、終了しないようにするためです。
>判りにくいですが、画面の出力の確認のためでした。

出力内容の確認のためでもそんなことはしません。
大体そんなことをしたらCPU使いっぱなしになって大変なことになります。
getchar()でキー入力待ちにすればいいだけです。
    • good
    • 0
この回答へのお礼

getchar()
はい、わかりました。
以後これを使います、
こういう関数があったのですか、
私は、while(1){} か、 cin >> string;
しか使ったことないので、悩んでいました。
ありがとうございます。
はい、インテリセンスのことです。
すみません。
通ったという表現は、私のレベルでは、コンパイラが教師みたいなものでして、以後質問時には気をつけます。
それで、結局、何故なのでしょうか?

お礼日時:2004/03/08 12:50

すみません。


私にはクラスの構造と、何をこれでしようとしているかが理解できません・・・

メンバのmとnは何を示すものでしょう?
x()も、、xx()もmを返しているだけで何をしているのでしょう?何のためのメンバ関数なのでしょう?


>int xx()
>{
>data::list cd;
>return cd.m;
>}

cd.mですが、data::listにデフォルトコンストラクタがないから不定な値を返しています。


最後の
while(1){}return 0;

これなんて、永久にプログラムが終了しないんですけども・・・

この回答への補足

回答ありがとうございました。
int xx()
{
data::list cd;
return cd.m;
}
の部分を、
int xx()
{
return li.m;
}
に変更しましたら無事通りました。
li.m→ここで、「.」を押してもmが出てこなかったので、
無視していたようでした。
ありがとうございました。
ところで、「li.m」の「m」が「.」を押しても出ないのですが、
なぜでしょうか?
---------------------------------------------
m n を同一の変数内で、足し算をしたかったのです。
while(1){}return 0;
は、終了しないようにするためです。
判りにくいですが、画面の出力の確認のためでした。
ありがとうございました。

補足日時:2004/03/08 11:02
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!