ホームページ  >  記事  >  バックエンド開発  >  C++ エラー: コンストラクターはパブリック領域で宣言する必要があります。どのように対処すればよいですか?

C++ エラー: コンストラクターはパブリック領域で宣言する必要があります。どのように対処すればよいですか?

王林
王林オリジナル
2023-08-21 20:26:461779ブラウズ

C プログラミングでは、コンストラクターはクラスのメンバー変数を初期化するために使用される重要な関数です。これは、オブジェクトの適切な初期化を保証するために、オブジェクトの作成時に自動的に呼び出されます。コンストラクターはクラス内で宣言する必要がありますが、「コンストラクターはパブリック領域で宣言する必要があります。」というエラー メッセージが表示される場合があります。

このエラーは通常、コンストラクターのアクセス修飾子が間違っていることが原因で発生します。 C では、クラスのメンバー変数とメンバー関数には、public、private、protected などのアクセス修飾子があります。パブリックとは、メンバーがクラスの内部および外部からアクセスできることを意味し、プライベートとは、メンバーがクラス内でのみアクセスできることを意味し、保護とは、メンバーがクラスとその派生クラス内でのみアクセスできることを意味します。

クラスの定義において、コンストラクターによって宣言されたアクセス修飾子が public でない場合、コンパイラーは「コンストラクターはパブリック領域で宣言する必要があります」というエラー メッセージを表示します。したがって、この問題を解決するには、コンストラクターのアクセス修飾子を public に変更するだけで済みます。

以下はサンプル コードです:

class Student {
 private:
  string name;
  int age;

 public:
  Student(string n, int a) {
    name = n;
    age = a;
  }

  void display() {
    cout << "Name: " << name << endl;
    cout << "Age: " << age << endl;
  }
};

int main() {
  Student s("Tom", 18);
  s.display();
  return 0;
}

上記のコードでは、コンストラクターはクラスのパブリック メンバー関数として定義されているため、クラスの外部からアクセスして呼び出すことができます。コンストラクターのアクセシビリティがプライベートまたは保護に設定されている場合、「コンストラクターはパブリック領域で宣言する必要があります」というエラー メッセージが表示されます。

コンストラクターのアクセス許可を public に変更することに加えて、クラスの定義でアクセス許可の省略形を使用することもできます。

class Student {
  string name;
  int age;

 public:
  Student(string n, int a) {
    name = n;
    age = a;
  }

  void display() {
    cout << "Name: " << name << endl;
    cout << "Age: " << age << endl;
  }
};

このようにして、private キーワードと public キーワードは省略でき、コンストラクターはデフォルトで public に設定されます。

つまり、「コンストラクターはパブリック領域で宣言する必要があります」というエラーが発生した場合は、まずコンストラクターのアクセス修飾子がパブリックかどうかを確認し、C のアクセス権ルールに従って、 class メンバー変数とメンバー関数に正しくアクセスし、呼び出すことができます。

以上がC++ エラー: コンストラクターはパブリック領域で宣言する必要があります。どのように対処すればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。