14歳の自分に衝撃の事実を告げてください

Visual Studio 2008を使い、C++のプロジェクトを引き継ぎましたが
ヘッダーファイルに定義されているとある関数がどこから呼び出されているか分からないので質問させていただきました。

呼び出し元を探すためにやったこと
・関数名の上で右クリック→全ての参照の検索
・関数名の上で右クリック→呼び出しブラウザ→呼び出し元の表示
・Doxygenでドキュメント生成し、当該関数の確認

以上のいづれをやっても呼び出されていないような状態なのですが、他に確認できる方法はあるのでしょうか?
また、これだけやって呼び出し元がないような状況なら呼び出されていないと結論づけても問題はないでしょうか?

A 回答 (3件)

>当該クラスは別クラスを継承しており、その中で純粋仮想関数が定義されているため、クラスのインスタンスを作成できないというエラーになってしまいました。



継承元クラスの関数としての呼び出しは確認されてますか?

class A {
public:
virtual void foo() = 0;
};
class B: public A {
public:
virtual void foo() {printf("foo\n"); }
};

A *a = new B();
a->foo(); // これだとclass B::foo()の呼び出しとは認識されないんじゃないかな

この回答への補足

ご回答ありがとうございます。
休日に入ってしまったため、出社した際に確認してみます。

補足日時:2013/01/12 16:30
    • good
    • 0

中に入ったら実行時の致命的なエラーを引き起こすように関数を変更するとか?

この回答への補足

現状として、当該関数の中はメッセージボックスが表示される状態なのですが、そのメッセージボックスは見たことがないメッセージであった為、どうにかして呼び出されている(または、いない)事を確認したかったのです。

補足日時:2013/01/12 16:32
    • good
    • 0

> 以上のいづれをやっても呼び出されていないような状態なのですが、他に確認できる方法はあるのでしょうか?



一時的に関数名を変更してビルド。どこからも呼ばれていなければリンクに成功する。

この回答への補足

完全に失念していたことがありました。
当該クラスは別クラスを継承しており、その中で純粋仮想関数が定義されているため、クラスのインスタンスを作成できないというエラーになってしまいました。

補足日時:2013/01/11 11:16
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
あえてのエラーですね。その発想はできませんでした・・・
一番簡単な方法なんですけどね。

ひとまず、試してみます。
他にも「こんな方法思いついたけどどーよ?」なんてありましたらよろしくお願いします。

お礼日時:2013/01/11 11:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報