こんにちは、ちょっと分かりにくい質問なんですが。
class c1
{
int k1();
class c2
{
int k2();
};
};
と言うのがあったとします。
そこで、k2の関数の内部でk1を呼び出したいのですが、
int k2()
{
return c1::k1();
}
見たいな事をすると、「静的でない関数の呼び出しが正しくありません」とエラーが出てしまい、コンパイルできません・・・
だからといってk1をc1の外に出してしまうとc1の変数にアクセスできなくなってしまうため、それはできません。
何かいい方法はないでしょうか・・・解決策をお待ちしていますm(_ _)m
クラスの設計がちょっと駄目です。
c2からc1::k1にアクセスしたいなら、
c2がc1のポインタを持つか、k1をstaticメンバにします。
ちなみにstaticメンバはCの関数と同じただの関数でメンバ変数にアクセスできません。
またこの場合c2を内包する意味がありません。
class c1
{
int k1();
int k2();
};
でいいのです。
return c1::k1();
これが何故だめか、ですが
c1は実体がありません。その為staticメンバ(静的な関数)である必要があるのです。
class c1
{
static int k1();
class c2
{
int k2();
};
};
int c1::k1()
{
return 0;
}
int c1::c2::k2()
{
return c1::k1();
}
一応これでコンパイルは通りますが。
お礼
そうだったんですか!! できました^^ありがとうございましたm(_ _)m