当前位置: 首页 > 知识库问答 >
问题:

尝试使用继承但无法访问父类

百里君博
2023-03-14

你好,我正在尝试创建一个类,它使用从学生类到研究生类的继承,但程序说它是不可访问的。


    class Student
{
    Student(char* n, int id)
    {
        name = new char[strlen(n) + 1];
        strcpy_s(name,strlen(n)+1, n);
        studentId = id;
    }
    ~Student()
    {
        if (name != NULL)
            delete[]name;
    }
    void printStudent()
    {
        cout << "Student ID: " << studentId << "\nStudent Name: " << name << endl;
    }
protected:
    int studentId;
    char* name;
};
class GraduateStudent :public Student
{
public:
    GraduateStudent(char* n, char* a, int id) : Student(n, id)
    {
        area = new char[strlen(a) + 1];
        strcpy_s(area, strlen(a) + 1, a);
    }
    ~GraduateStudent()
    {
        if (area != NULL)
            delete[]area;
    }
    void printGrad()
    {
        printStudent();
        cout << "Research area: " << area << endl;
    }
private:
    char* area;
};

程序应该打印出一个初始化的GraduateStudent类变量,调用printStudent();

共有2个答案

阎阳
2023-03-14

类的默认访问是private的,这使得op的函数是private的。因此,您的构造函数是私有的。你应该看看这个。还有,这回答了你的问题吗?

thx for edits@Sweenish

丁鸿云
2023-03-14

您将int studentID;char*name;设置为受保护的,因此可以在graduateStudent中访问它们,以便轻松地执行以下操作:

void printGrad() {
  cout << "Student ID: " << studentId << "\nStudent Name: " << name << endl;
  cout << "Research area: " << area << endl;
}

或者,在student的公共部分中使用decleareprintstudent();。事实上,如果您没有任何规格说明,则类中的private是默认的,而结构中的public是默认的

 类似资料:
  • 问题内容: 使用定义控制器的原始方法 ,访问父级的作用域非常简单,因为子级作用域原型继承自其父级。 Controller-As方法 似乎是声明控制器的推荐方法。但是,对于Controller-A,上述方法不再有效。 当然,我可以通过View 访问父作用域: 我确实有一些问题(意大利面条代码可能存在),但是这个问题是关于从子控制器访问父作用域的。 我看到此工作的唯一方法是: 因此,现在,子控制器需要

  • 问题内容: 通读“用Java思考”,我陷入了《内部类》一章的ex:6。 练习6:(2)在自己的程序包中使用至少一种方法创建一个接口。在单独的程序包中创建一个类。添加一个实现该接口的受保护的内部类。在第三个包中,从您的类继承,并在方法内部,返回受保护的内部类的对象,并在返回期间向上转换到接口。 这是我的代码: IOne.java 接口 COne.java 具有实现接口的受保护内部类的类 CTwo.j

  • 我得到: 错误:(37,30)Java:无法访问未找到java.util.function.function的java.util.function.function类文件 指向“等待”

  • 问题内容: 我正在按照http://www.py2exe.org/index.cgi/Tutorial上的教程进行操作,以了解如何使用py2exe。我进入步骤3,在这里您应该运行命令: 我这样做,然后收到此错误: 我的机器上安装了python 2.4。有任何想法吗?我相信这很简单。 问题答案: Python不在您的路上。如果确实有Python 2.4,则应使用默认安装程序。 无论文件位于何处,如果

  • 问题内容: 我遇到了一个例外,但找不到原因。 我得到的例外是: :尝试访问方法; 从B类 该方法是公开的。 我正在使用Tomcat 5.5.12和JAVA 1.6 问题答案: 几乎可以肯定,您在运行时使用的类版本与您期望的版本不同。特别是,运行时类将不同于您针对其进行编译的类(否则将导致编译时错误)-该方法曾经存在private吗?您的系统上任何地方都有类/ jar的旧版本吗? 作为状态的java

  • 获取以下错误: 线程“main”java.io.FileNotFoundException出现异常:config.properties(系统找不到指定的文件)在java.io.FileInputStream.Open(本机方法)在java.io.FileInputStream.(FileInputStream.java:138)在java.io.FileInputStream.(FileInput