C++ 動的なオブジェクトの受け渡し
Posted: 2011年9月09日(金) 03:29
C++の動的なオブジェクトについて質問です。
動的なオブジェクトの受け渡しというものは通常やらないのでしょうか?
現在、シューティングを作っていまして、
工場クラスで動的に生成した機体オブジェクトが、工場内でしか扱えず、困っていました。
通常の変数のようにゲッターで渡そうとしましたが、どうにも動作がおかしいですし、動的なオブジェクトを渡すという事に違和感があります。
やりたいことをしている、似たような状況を起こすソースを用意しました。
hogeクラスが工場クラスに相当します。
工場クラスでは実際には複数のpiyoオブジェクトを生成します。
お聞きしたいのは、
・動的なオブジェクトを引き渡すということはやってもいいのか、やるべきなのか。
⇒やってもいいならどうやって実装するのか
工場クラスのprivateに生成するわけですから、それを取得する方法はゲッターを使っていました。
しかしその方法を使ったこのソースでは異常に重くなります
⇒やるべきではないならどのようにしているのか
工場クラスのprivateに生成する以上、工場クラス以外では扱えなくなります。
工場クラスでオブジェクトを管理するのはおかしいですよね
よろしければどなたかご教授ください。
動的なオブジェクトの受け渡しというものは通常やらないのでしょうか?
現在、シューティングを作っていまして、
工場クラスで動的に生成した機体オブジェクトが、工場内でしか扱えず、困っていました。
通常の変数のようにゲッターで渡そうとしましたが、どうにも動作がおかしいですし、動的なオブジェクトを渡すという事に違和感があります。
やりたいことをしている、似たような状況を起こすソースを用意しました。
hogeクラスが工場クラスに相当します。
工場クラスでは実際には複数のpiyoオブジェクトを生成します。
#include <iostream>
using namespace std;
class piyo{
private:
int data;
public:
piyo(int a){
data = a;
}
piyo(){}
void putData(){
cout << data << endl;
}
};
class hoge{
private:
piyo *dou;
public:
hoge(int v_a){
dou = new piyo(v_a);
}
~hoge(){
delete dou;
}
piyo *GetPiyo(){
return dou;
}
void delPiyo(){
delete dou;
}
};
int main(){
hoge *ho = new hoge(10);
piyo *py = new piyo;
py = ho->GetPiyo();
py->putData();
ho->delPiyo();
delete ho;
delete py;
return 0;
}
・動的なオブジェクトを引き渡すということはやってもいいのか、やるべきなのか。
⇒やってもいいならどうやって実装するのか
工場クラスのprivateに生成するわけですから、それを取得する方法はゲッターを使っていました。
しかしその方法を使ったこのソースでは異常に重くなります
⇒やるべきではないならどのようにしているのか
工場クラスのprivateに生成する以上、工場クラス以外では扱えなくなります。
工場クラスでオブジェクトを管理するのはおかしいですよね
よろしければどなたかご教授ください。