>  기사  >  백엔드 개발  >  C++ 오류: 생성자는 공개 영역에서 선언되어야 합니다. 어떻게 처리해야 합니까?

C++ 오류: 생성자는 공개 영역에서 선언되어야 합니다. 어떻게 처리해야 합니까?

王林
王林원래의
2023-08-21 20:26:461996검색

C++ 프로그래밍에서 생성자는 클래스의 멤버 변수를 초기화하는 데 사용되는 중요한 함수입니다. 객체의 적절한 초기화를 보장하기 위해 객체가 생성될 때 자동으로 호출됩니다. 생성자는 클래스에서 선언해야 하지만, 가끔 "생성자는 공개 영역에 선언해야 합니다."라는 오류 메시지가 나타나는 경우가 있습니다.

이 오류는 일반적으로 생성자의 잘못된 액세스 수정자로 인해 발생합니다. C++에서 클래스의 멤버 변수와 멤버 함수에는 public, private 및 protected를 포함한 액세스 한정자가 있습니다. Public은 클래스 내부 및 외부에서 멤버에 액세스할 수 있음을 의미하고, Private은 클래스 내에서만 액세스할 수 있음을 의미하며, Protect는 클래스 및 해당 파생 클래스 내에서만 액세스할 수 있음을 의미합니다.

클래스 정의에서 생성자가 선언한 액세스 한정자가 공개가 아닌 경우 컴파일러는 "생성자는 공개 영역에서 선언되어야 합니다"라는 오류 메시지를 표시합니다. 따라서 이 문제를 해결하려면 생성자의 액세스 한정자를 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;
}

위 코드에서 생성자는 클래스의 공개 멤버 함수로 정의되어 있어 클래스 외부에서도 접근 및 호출이 가능합니다. 생성자의 접근성이 private 또는 protected로 설정된 경우 "생성자는 공용 영역에서 선언되어야 합니다."라는 오류 메시지가 표시됩니다.

생성자의 액세스 권한을 공개로 변경하는 것 외에도 클래스 정의에 액세스 권한 약어를 사용할 수도 있습니다.

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;
  }
};

이 방법으로 비공개 및 공개 키워드를 생략하고 생성자를 공개로 설정할 수 있습니다. 기본.

간단히 말하면 "생성자는 공개 영역에서 선언되어야 합니다"라는 오류가 발생하면 먼저 생성자의 액세스 한정자가 공개인지 확인하고 C++의 액세스 권한 규칙을 따라 멤버 변수가 Functions 클래스의 멤버는 올바르게 액세스하고 호출할 수 있습니다.

위 내용은 C++ 오류: 생성자는 공개 영역에서 선언되어야 합니다. 어떻게 처리해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.