C++相談室 part46
■ このスレッドは過去ログ倉庫に格納されています
0185デフォルトの名無しさん
2006/01/19(木) 13:51:07struct HogeComp{
int func(){ return 777; }
};
//hoge.h-------------------------------------------------------------
class HogeComp; //hoge_comp.hを伝染させないため、ヘッダではクラス宣言のみ
class Hoge{
HogeComp* hoge_comp; //本当はここは HogeComp hoge_comp; で良いのですが…
public:
Hoge();
~Hoge();
int func_comp();
};
//hoge.cpp-------------------------------------------------------------
#include "hoge.h"
#include "hoge_comp.h" //あえてこの順で
Hoge::Hoge() : hoge_comp( new HogeComp ){}
Hoge::~Hoge(){ delete hoge_comp; }
int Hoge::func_comp(){
return hoge_comp->func();
}
//main.h-------------------------------------------------------------
#include <iostream>
#include "Hoge.h"
int main(){
Hoge hoge;
std::cout << hoge.func_comp() << std::endl;
return 0;
}
hoge.cppでしか使わないhoge_compの宣言と実装とを、hoge.hを読み込む他のソースに伝染させないため
上のように書いています。この書き方はどうなんでしょうか。これではJavaっぽくて、C++の良さを失っていそうな気もします。
■ このスレッドは過去ログ倉庫に格納されています