関数の呼び出し方法 – 固定ページ 2 – プログラミング – Home

通知
すべてクリア

関数の呼び出し方法

固定ページ 2 / 2

Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

クラスBのコンストラクタ + 基底クラスの純粋仮想関数(virtual ~ = 0;)の定義を載せ
てください。

というか
> Kansu2()はvirtualで宣言してます
virtual の意味は理解できていますよね?


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

> VC6だと、warning C4259も出ちゃいました。

これは、Level4でないと出ないだけだと思われます。


返信引用
マーちゃん
 マーちゃん
(@マーちゃん)
ゲスト
結合: 19年前
投稿: 9
Topic starter  

クラスBのコンストラクタと基底クラスの純粋仮想関数は下記になります。

class B:public CB
{
public:
B(IPMUnknown *boss); <----IPMUnknownは現在作成しているプログラムをダウ
ロードして、
                 実行するアプリケーション(Indesign)特有のものです。
~B();
  virtual void Kansu2(); <----Kansu2()はvirtualで宣言してます
virtual bbbb();

private:
void cccc();

};

class PUBLIC_DECL CB : public IB
{
public:
CB(IPMUnknown *boss, PMIID interfaceID = IID_IOBSERVER); <----()中は
Indesign特有のもの
virtual ~CB();
virtual bbbb();

protected:

DECLARE_HELPER_METHODS()
};

class IB : public IPMUnknown
{
public:
virtual bbbb()=0;
};


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

とりあえず、関数呼出だけに限って言えば、
私の書いたように参照で引数渡しすれば通ると思いますが、
インスタンスをどうしたいかは、要求と設計次第なので
今の情報ではなんとも言えません。

今でてるエラーは別問題。


返信引用
マーちゃん
 マーちゃん
(@マーちゃん)
ゲスト
結合: 19年前
投稿: 9
Topic starter  

kansu1()はif文である条件が成立した時に呼ばれますが、
呼ばれる前にclass Bのインスタンスを生成すればいいでしょうか?

>Kansu2()はvirtualで宣言してます
virtualは基本クラスで宣言するものと本に書いてありましたが、
Kansu2()をclass Bにしかない関数にしたい時は、virtualで宣言
するのは間違ってる、という理解でいいでしょうか?

現在作成しているプログラムは、すでに出来上がっているものに対して、
手を加えているもので、プログラムのこともC++のこともまだまだ理解できていません。
初歩的な質問ばかりして、大変心苦しいのですが、
気を悪くせずに、どうか教えてください。
よろしくお願いします。


返信引用
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 22年前
投稿: 310
 

> Kansu2()をclass Bにしかない関数にしたい時
簡単な例。

class BaseB
{
public:
};

class B : public BaseB
{
public:
void Kansu2();
};


返信引用
REE
 REE
(@REE)
ゲスト
結合: 23年前
投稿: 240
 

>kansu1()はif文である条件が成立した時に呼ばれますが、
>呼ばれる前にclass Bのインスタンスを生成すればいいでしょうか?

>Kansu2()をclass Bにしかない関数にしたい時は、virtualで宣言
>するのは間違ってる、という理解でいいでしょうか?

どんな目的で何をする関数かも分からない状態で、
これらを判断することは出来ません。

>プログラムのこともC++のこともまだまだ理解できていません。

という状態で、

>すでに出来上がっているものに対して、手を加えているもので

ということをしている時点で間違っています。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

> kansu1()はif文である条件が成立した時に呼ばれますが、
> 呼ばれる前にclass Bのインスタンスを生成すればいいでしょうか?

そうすることは可能ですが、それで正解かどうかは マーちゃん さん以外には判断できません。
背景や事情を知っているのは、マーちゃん さんだけです。

> 初歩的な質問ばかりして、大変心苦しいのですが、
> 気を悪くせずに、どうか教えてください。

気は悪くしてませんが、C++の必要な知識をここで全部説明するのは不可能です。

「とりあえず動けばいい」的な対応をすると、C/C++では危険なコードを作る可能性が高いので、
もっと簡単なものから初めて、理解できるようになってから修正された方が安全だと思います。


返信引用
マーちゃん
 マーちゃん
(@マーちゃん)
ゲスト
結合: 19年前
投稿: 9
Topic starter  

C++をもう少し勉強してから、インスタンスの生成場所を考えてみたいと思います。
付き合っていただいて、ありがとうございました。
また何かありましたら、よろしくお願いします。


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました