编写程序声明基类 Animal,成员变量 age 声明为私有的。构造派生类 dog,在其成员函数 SetAge(int n) 中直接对 age 赋值时,会出现类似以下的错误提示: error C2248: 'age' : cannot access private member declared in class 'Animal' 把 age 改为公有成员变量后重新编译就可以正常编译了。根据提示,在右侧编辑器补充代码,并输出正确的值。
时间: 2024-02-13 16:04:14 浏览: 80
以下是代码补充:
```c++
#include <iostream>
using namespace std;
class Animal {
private:
int age;
public:
Animal(int a) : age(a) {}
int GetAge() const { return age; }
};
class Dog : public Animal {
public:
Dog(int a) : Animal(a) {}
void SetAge(int n) {
age = n; // 错误:不能访问基类 Animal 中的私有成员 age
// 修改为:
Animal::age = n;
}
};
int main() {
Dog d(3);
d.SetAge(5);
cout << d.GetAge() << endl; // 输出 5
return 0;
}
```
在派生类 Dog 中无法直接访问基类 Animal 中的私有成员 age,需要通过基类名限定符来访问。将 `age = n;` 修改为 `Animal::age = n;` 即可。
相关问题
c++声明一个基类animal,有私有变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值
好的,这里是 C++ 声明一个基类 `Animal`,并构造其派生类 `Dog`,并在 `Dog` 的成员函数 `SetAge(int n)` 中直接给 `age` 赋值的示例代码:
```c++
class Animal {
private:
int age;
public:
Animal() {
age = 0;
}
Animal(int a) {
age = a;
}
int GetAge() {
return age;
}
};
class Dog : public Animal {
public:
void SetAge(int n) {
age = n;
}
};
```
在这段代码中,我们先声明了一个基类 `Animal`,其中有一个私有变量 `age` 和一个构造函数,以及一个公有的获取年龄的成员函数 `GetAge()`。
然后,我们构造了一个派生类 `Dog`,并在其中声明了一个 `SetAge(int n)` 的成员函数。注意,我们没有直接访问 `age` 变量,因为它是私有的。而是通过继承 `Animal` 类并调用其 `GetAge()` 和 `SetAge()` 成员函数来间接访问和修改 `age` 变量。
在 `SetAge(int n)` 函数中,我们直接调用 `age = n;` 来给 `age` 赋值。
希望这个示例代码能够帮到你!
声明一个基类 animal,有私有整型成员变量 age,构造其派生类 dog,在其成员函数 set
基类 animal 的声明如下:
```cpp
class animal {
private:
int age;
public:
animal(int a = 0): age(a) {}
void setAge(int a) {
age = a;
}
int getAge() {
return age;
}
};
```
派生类 dog 的声明如下:
```cpp
class dog : public animal {
public:
void set(int a) {
setAge(a);
}
};
```
在派生类 dog 中,通过调用基类 animal 的 setAge 函数来设置 age 成员变量的值。
阅读全文