卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章64334本站已运行4115

C++报错:构造函数必须在public区域声明,怎么处理?

在C++编程中,构造函数是用来初始化类的成员变量的重要函数。它在创建对象时自动调用,以确保对象的正确初始化。构造函数必须在类中声明,但是有时会遇到错误提示“构造函数必须在public区域声明”。

这个错误通常是因为构造函数的访问权限修饰符错误引起的。在C++中,类的成员变量和成员函数都有一个访问权限修饰符,包括public、private和protected。public表示该成员可以在类内外被访问,private表示只能在类内部访问,而protected表示只能在类内及其派生类中访问。

在类的定义中,如果构造函数声明的访问权限修饰符不是public,编译器就会出现“构造函数必须在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成员函数,这样就可以被在类外部访问和调用。如果将构造函数的可访问性设置为private或protected,则会提示“构造函数必须在public区域声明”的错误。

除了将构造函数的访问权限修改为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。

总之,当遇到“构造函数必须在public区域声明”的错误时,应该首先检查构造函数的访问权限修饰符是否为public,并且遵循C++的访问权限规则,以确保类的成员变量和成员函数可以正确访问和调用。

卓越飞翔博客
上一篇: C++中的进程管理与线程同步
下一篇: C++编译错误:错误的函数参数,该怎样修复?
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏