首页 > 解决方案 > 我无法使用继承 setter 和 getter 返回 const char * 变量

问题描述

我可以在 setter 函数中打印正确的值,但是当我尝试使用 getter 返回相同的变量时,没有输出。这是我的代码。任何人都知道我如何更正我的代码?

class Student {
public:
    char age;
    double height;
    double gpa;

    int getAge();
    void setAge(int *);
protected:
    const char * name;
 };

class Male :Student {
 public:
 void setName(const char * s);
 const char * getName();
};

void Male::setName(const char * s){
const char* name = s;
std::cout << name << std::endl;
}

const char* Male::getName() {
 return name; //I can't return the value of variable name.
 std::cout << name << std::endl;
}

 void Student::setAge(int* c) {
 age = *c;
}

int Student::getAge() {
 return age;
}

int main() {
 Student jason;
 Male myName;
 int edad = 30;
 jason.height = 162;
 jason.gpa = 1.5;

 jason.setAge(&edad);
 myName.setName("James");

std::cout << jason.height << "\n" << jason.getAge() << "\n" << jason.gpa << "\n" << std::endl;
system("pause");
return 0;
}

我不知道为什么我不能返回 const char 变量。:(

标签: c++inheritancegetter-setter

解决方案


void Male::setName(const char * s) {
  name = s;
  std::cout << name << std::endl;
}

您需要设置s为成员变量name,而不是在方法中创建局部变量


推荐阅读