You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 19:15:49