次のように、コンパイラにコードの警告/エラーを発行させることが可能かどうかを知りたいです。
ノート:
1. ええ、それは悪いプログラミング スタイルであり、そのようなケースは避けるべきです - しかし、私たちはレガシ コードを扱っており、コンパイラがそのようなケースを特定するのに役立つことを願っています.)
2. オブジェクトのスライスを無効または有効にするコンパイラ オプション (VC++) がある場合は、それを使用したいと思います。
class Base{};
class Derived: public Base{};
void Func(Base)
{
}
//void Func(Derived)
//{
//
//}
//main
Func(Derived());
ここで、2 番目の関数をコメント アウトすると、最初の関数が呼び出され、コンパイラ (VC++ と Gcc の両方) はそれを快適に感じます。
C++標準ですか?そのようなコードに遭遇したときに警告を出すようにコンパイラ (VC++) に依頼できますか?
本当にありがとう!!!
編集:
助けてくれて本当にありがとう!
エラー/警告を表示するコンパイラ オプションが見つかりません。これを VC++ コンパイラ コンサルタントの MSDN フォーラムに回答なしで投稿しました。したがって、残念ながら gcc も vc++ もこの機能を実装していません。
そのため、派生クラスをパラメーターとして受け取るコンストラクターを追加することが、今のところ最善の解決策です。
編集
MS にフィードバックを送信しました。すぐに修正されることを願っています。
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=421579
-バイヤン