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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
タケ

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

#1

投稿記事 by タケ » 13年前

こんにちは、お世話になります。
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をアウターからアクセスし、アウターの関数により表示させることです。
どなたかご回答お願いします。

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

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

#2

投稿記事 by beatle » 13年前

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

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

コード:

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

タケ

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

#3

投稿記事 by タケ » 13年前

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

閉鎖

“C言語何でも質問掲示板” へ戻る