#include <iostream>
class Abc // created class with name Abc
{
void display()//member function
{
cout<<"Displaying NO."<<endl;
}
};
int main()
{
Abc obj;//creating object of the class
obj.display();//calling member function inside class
}
它返回错误
main.cpp: In function 'int main()':
main.cpp:5:10: error: 'void Abc::display()' is private
void display()
^
main.cpp:13:17: error: within this context
obj.display();
^
我曾尝试制作显示功能public int main
,但之后它会出错
main.cpp:5:11: error: expected ':' before 'void'
public void display()
^
答案 0 :(得分:5)
声明为:
class Abc
{
public:
void display()
{
cout<<"Displaying NO."<<endl;
}
};
或:
struct Abc
{
void display()
{
cout<<"Displaying NO."<<endl;
}
};
struct 的默认保护是公开的,类的默认保护是私有的
答案 1 :(得分:1)
错误消息足够清楚。您不能在课外调用私有成员函数。默认情况下,具有关键字class的类具有私有访问控制。写下
class Abc // created class with name Abc
{
public:
void display()//member function
{
cout<<"Displaying NO."<<endl;
}
};
或
struct Abc // created class with name Abc
{
void display()//member function
{
cout<<"Displaying NO."<<endl;
}
};
默认情况下,带有关键字struct的类具有公共访问控制。
最好将成员函数定义为
void display() const//member function
{
std::cout<<"Displaying NO."<<endl;
}
考虑到你没有使用directibe
using namespace std;
您必须对std ::中声明的实体使用限定名称。例如
std::cout<<"Displaying NO."<<std::endl;