クラスの使い方について

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

クラスの使い方について

#1

投稿記事 by dom » 13年前

以下のコードのようなことをしたいのですがどうすればよいのかわかりません。
一つの方法として、もともとMyClassのコンストラクタで行っていた処理をメンバ関数に移し、オブジェクトをグローバル変数で宣言、コードの11行目ではそのメンバ関数を使用というのが思いつくのですがあまり綺麗じゃない気がします。
何か良い方法はないでしょうか?

コード:

void callback()
{
    // ここでobjを利用したい
    // 例えば
    obj.m_func();  // 
}

int main(void)
{
    Init();  // MyClassのコンストラクタ内の処理はこの後に来る必要がある。
    MyClass obj(arg1, art2, ...);  // コンストラクタは引数を取る
}
   


アバター
バグ
記事: 130
登録日時: 15年前
住所: 愛媛県
連絡を取る:

Re: クラスの使い方について

#2

投稿記事 by バグ » 13年前

こういうことでしょうか?

コード:

void callback(MyClass& obj)
{
	// ここでobjを利用したい
	// 例えば
	obj.m_func();  // 
}
 
int main(void)
{
	Init();  // MyClassのコンストラクタ内の処理はこの後に来る必要がある。
	MyClass obj(arg1, art2, ...);  // コンストラクタは引数を取る
	callback(obj);
}

dom

Re: クラスの使い方について

#3

投稿記事 by dom » 13年前

関数callback()の引数は変更できないのです。
私は以下の方法しか思いつかず何かうまい方法はないかと質問させていただきました。

コード:

MyClass obj(); // ここでインスタンス化

void callback()
{
	// ここでobjを利用したい
	// 例えば
	obj.m_func();  // 
}
 
int main(void)
{
	Init(); 
	obj.process();  // 元々のコンストラクタと同等の処理

}

アバター
バグ
記事: 130
登録日時: 15年前
住所: 愛媛県
連絡を取る:

Re: クラスの使い方について

#4

投稿記事 by バグ » 13年前

そうなると・・・

1:objを素直にグローバルにする
2:MyClassをシングルトンにしてしまう
3:設計を見直す

のいずれかでしょうか?

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: クラスの使い方について

#5

投稿記事 by ISLe » 13年前

callback関数の中身も変更できないのでしょうか?
あるいはヒープを使用できないとか?

コード:

MyClass *obj;
void callback()
{
    // ここでobjを利用したい
    // 例えば
    obj->m_func();  // 
}
int main(void)
{
    Init(); 
    obj = new MyClass(arg1, art2, ...);  // コンストラクタは引数を取る
    // 後略
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: クラスの使い方について

#6

投稿記事 by softya(ソフト屋) » 13年前

コンストラクタがmainになくても良いなら次のような書き方も。

コード:

void callback()
{
	static MyClass *obj = NULL;
    // ここでobjを利用したい
    // 例えば
    if( obj==NULL ) {
	    obj = new MyClass(arg1, art2, ...);  // コンストラクタは引数を取る
	}
    obj->m_func();  // 
}
int main(void)
{
    Init(); 
    // 後略
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

dom

Re: クラスの使い方について

#7

投稿記事 by dom » 13年前

なるほど。クラスを書き変えなくて良いのでポインタの使用がよさそうです。
この方針で行ってみます。ありがとうございました。

閉鎖

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