1

多くの場合、次のようなハックに遭遇します

//lets say this is some class that still doesnt support...
//...all the functionality that it should based on the design docs
void MyClass::MyFunction()
{
  throw std::exception("not implemented");
}

これは悪い習慣だと思いますが、それはさておき:
関数が使用されている場合にのみ、コンパイル中に同じことを行う方法はありますか(別名、未使用の場合、コンパイルは成功するはずです)。

編集:仮想メモリ機能にも興味があります。

4

4 に答える 4

6

実装を完全に削除して関数宣言のみを使用すると、基本的にコンパイル時にリンカー エラーが発生します。残念ながら、リンカ エラーは見苦しく、追跡が困難な傾向にありますが、まだ実装されていない関数を呼び出す場合は、かなり扱いやすいと思います。

于 2012-11-28T16:00:27.220 に答える
5

非仮想関数の場合は、定義をコメントアウトするだけです。

それが基本クラスで宣言された仮想関数である場合、コンパイル時に呼び出しを制御できないため、唯一のオプションは実行時エラーまたは例外です。

于 2012-11-28T16:01:18.723 に答える
0

私が考えることができる最も簡単な解決策は、実装されていない関数にコメントすることです。

おそらくあなたが考えていたものではないかもしれませんが、そうすると、何かがそれを使おうとするとコンパイル時エラーが生成され、結果のコードは通常は最適化されていない空の関数と同じになります。

于 2012-11-28T16:03:51.337 に答える