仮想として宣言された関数のために、廃止された警告が表示されることがあります。 「g ++(GCC)4.1.1 20061011(Red Hat 4.1.1-30)」を使用しています。 私の研究は、 純粋な仮想関数(すなわち、クラスbueller {仮想int cameron()= 0;};)を非難することに関するgcc 4.xに問題があるかもしれないことを示しています。それらを通常の仮想関数と呼んでください。 ただ、私たちが同じページにしている...g ++を使用して、仮想クラスメンバ関数を非推奨にする方法
がfoo.h
class Foo
{
void Foo_A() __attribute__((deprecated)); //non-virtual
virtual void Foo_B() __attribute__((deprecated)); //virtual
virtual void Foo_C() __attribute__((deprecated)) = 0; //pure virtual
};
言って、私はこれをコンパイルし、foo.cppファイルや++グラムを使用して、いくつかのmain.cppにファイル。
1)Foo_A()を使用するものはいずれも実際に警告を表示します。
2)Foo_B()を使用するものは警告を表示しません。
3)Fooを継承し、Foo_Cを実装し、それを使用して警告を表示しないもの。
番号1:問題なく動作します。
番号3:どんな..既知のバグ/機能のように思える。..
は、しかし、2位にはexplinationはないように思えます。 おそらくそれは#3で結ばれていますが、私が見つけたものは何も言及していません。
ここで、私が廃止予定の通常の仮想クラスメンバー機能に関して何か不足していることを知っている人は誰ですか?
BTW:私のmakefileで-Wno-deprecateが有効になっていません。
Rob、動的メモリと - >演算子を使用するとどうなるのでしょうか?オペレーター?それは同じように振る舞いますか?私はgentooを実行していますが、現時点ではUbuntuではありません。 – sbrett
"d"と "f"をポインタに変更し、 ' - > Foo_B()'を呼び出すと、まだ2つの警告が表示されます。 –
Robにお尋ねいただきありがとうございます。また、彼の助けを借りてStaffanにも感謝します。これは欠けている欠点の警告の謎を解決します。それは老人ジョンソンだった。いい仕事チーム! – sbrett