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

王林
リリース: 2023-08-21 20:26:46
オリジナル
1985 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!