ソフトウェア開発支援
IR情報 会社情報

FAQ

QA・C/QA・C++

QA·C/QA·C++に関する

ID.9

Q.「常に直接初期化を使用する(-audi+)」オプションの設定基準を教えてください。 QAC++2.1J以上

A.

コンパイラの中には、'T x = e;'という形式でクラスを 宣言した場合に、'T x(e);' と記述されたものと見なして 初期化するものと、'T x; x = e;' と記述されたものと 見なして初期化するものがあります。
image_toyo_common_spacer.gif.gif
お使いのコンパイラが、前者の挙動をする場合は、 「常に直接初期化を使用する(-audi+)」オプション を設定する必要があります。後者の場合は、デフォルト(-audi-)のままにします。
image_toyo_common_spacer.gif.gif
具体的には、お使いのコンパイラが次のソースコードをエラーなく コンパイルできる場合は、-audi+オプションを設定する必要があります。
  // Error ==> -audi-  (default)
  // Success ==> -audi+
  class A{};
  
  class B {
  public:
    B(const A&) {}
  };
  
  class C {
  public:
    C(const B&) {}
  };
  
  void foo() {
    A c1;
    C c2 = c1; // Problem
  }
  
  int main(void) { return 0; }
なお、設定方法は次の通りです。
image_toyo_common_spacer.gif.gif
GUIから設定する場合:
  [コンパイラ パーソナリティ][拡張] タブで
  [常に直接初期化を使用する]
  チェックボックスを選択します。
image_toyo_common_spacer.gif.gif
設定ファイルを直接編集する場合:
  -audi+ と記述します。
evernote share Google plus Face Book Google plus Liked In

detail__vid--text.png

はい (0)
いいえ (0)

PAGE TOP

本ウェブサイトではサイト利用の利便性向上のために「クッキー」と呼ばれる技術を使用しています。サイトの閲覧を続行されるには、クッキーの使用に同意いただきますようお願いいたします。詳しくはプライバシーポリシーをご覧ください。