ページ 11

外部クラスから内部クラスへアクセスしたい

Posted: 2012年12月17日(月) 01:58
by タケ
こんにちは、お世話になります。
VisualStudio2010 C++ DXライブラリを用いて開発しています。

内部クラスの取り扱いについての質問です。
今、内部クラス内のメンバ変数に、それを定義した外部クラスからアクセスしたいのですが、これについて悩んでいます。
そもそも、クラスの使い方が怪しいので、基本からおかしかったらご指摘ください。

コード:

//----------test.h-------------

#include "DxLib.h"

class Outer{
private:
	class	Inner;
	Inner	*I_obj;
public:
	void Draw();
};

class Inner{
private:
	wchar_t	inner_c[30];
	int	inner_i;
public:
	Inner();
};


//--------- test.cpp -----------

#include "test.h"

Inner::Inner() {
	inner_i = 10;
	wcscpy(inner_c, L"test");
}

void Outer::Draw() {
	DrawFormatString(0, 0, GetColor(255, 255, 255), L"%d", I_obj.inner_i);//Innerのintにアクセスしたい
	DrawFormatString(0, 20, GetColor(255, 255, 255), L"%s", I_obj.inner_c);//Innerのcharにアクセスしたい
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
	Outer	O_obj;
	O_obj.Draw();
}
コンパイラが通らないので実行できてません。
やりたいことは、インナーのiとcをアウターからアクセスし、アウターの関数により表示させることです。
どなたかご回答お願いします。

Re: 外部クラスから内部クラスへアクセスしたい

Posted: 2012年12月17日(月) 07:26
by beatle
まず、インナー・アウターは関係ない話ですが、privateなメンバにはクラス外部から直接アクセスできません。
Innerクラスのinner_cとinnter_iにアクセスしたいなら、それらをpublicにするか、アクセサ関数を定義しましょう。

そして、Innerクラスの定義方法ですが、

コード:

class Outer::Inner {
...
};
としなければいけないと思います。

Re: 外部クラスから内部クラスへアクセスしたい

Posted: 2012年12月17日(月) 15:41
by タケ
なるほど、定義方法からおかしかったわけですね。
そのクラスを内包しているから、内部変数は使い放題!と勘違いしていました。
もう一度見直して、挑戦してみたいとおもいます。
アドバイスありがとうございます。