2

こんにちは、サーとママ)

Code::Blocks 10.05、FreeBSD 9.1を使用してc ++をプログしているときに、奇妙な問題が発生しました

lib.cpp のソース:

class A{
  public:
    A();
    A(var1, var2);
};
A::A(){ imlementation }
A::A(va1, var2) {implementation }
class B : public A{
  public:
    B();
    B(var1, var2);
};
B::B() : A() {} // this is Astr#
B::B(var1, var2) : A(var1, var2) {} // this is Bstr#

lib.h のソース:

class A{
  public:
    A();
    A(var1, var2);
};
class B : public A{
  public:
    B();
    B(var1, var2);
};

main.cpp のソース:

#include "lib.h"
...
int main(){
  ...
  B* Bptr = new B();
  B* Bptr2 = new B(var1, var2);
  ...
}

そして、これらのビルド警告が表示されます:

.../lib.cpp||In constructor 'B::B(var1, var2)':
.../lib.cpp|Bstr#|warning: will never be executed
.../lib.cpp||In constructor 'B::B(var1, var2)':
.../lib.cpp|Bstr#|warning: will never be executed
.../lib.cpp||In constructor 'B::B()':
.../lib.cpp|Astr#|warning: will never be executed
.../lib.cpp||In constructor 'B::B()':
.../lib.cpp|Astr#|warning: will never be executed
||=== Build finished: 0 errors, 4 warnings ===|

この警告はデバッグ モードでのみ表示されます。リリース ビルドは問題ないようです。コードは正常にビルドおよび実行されますが、何が間違っているのでしょうか?

4

2 に答える 2

3

B(var1,var2)lib.hのコンストラクターはプライベートです。

于 2013-01-11T07:27:05.547 に答える
0

警告:実行されることはありません

で有効にできるGCCの警告です-Wunreachable-code-Wunreachable-code信頼性が非常に低いため、使用しないでください。そのため、新しいバージョンのGCCではオプション全体が完全に削除されました。(実際には、完全に削除されているわけではありません。コマンドラインオプション-Wunreachable-codeは引き続き存在しますが、何も実行されなくなります。)

于 2013-01-11T07:16:59.500 に答える