VSCode提示类外定义的构造函数不可访问,原因是什么?
问题原因及解决方法
你的问题出在类成员的访问权限上:在C++中,类内部的成员(包括属性、方法、构造函数)默认的访问权限是private,私有成员只能在类内部被访问,外部的main函数无法调用私有构造函数来创建对象,所以VSCode提示构造函数不可访问。
解决步骤
把构造函数的声明移到类的public区块中,让外部代码可以访问它:
修改后的完整代码:
using namespace std; #include<iostream> class player{ public: // 添加public访问修饰符 // 把构造函数声明移到public区域 player(int exp,float avg); // attributes int xp{0}; string name; int health{0}; float avg_score{0}; int tot{0}; int c{0}; // methods void add_score(int score){ tot += score; c++; }; void display_avg_score(){ avg_score = tot/c; cout << avg_score << endl; }; void player_is_perfect(){ if((xp > 5) && (avg_score > 23)){ cout << "Perfect"<< endl; } }; }; player::player(int exp,float avg){ xp = exp; avg_score = avg; }; int main(){ player frank{23,45.6}; };
补充说明
你也可以根据设计需求调整访问权限的分布——通常会把构造函数、需要外部调用的方法设为public,仅内部使用的属性和方法设为private,以此实现类的封装特性。
内容的提问来源于stack exchange,提问作者Radhika Desai
相关产品推荐
相关产品推荐

