我正在尝试将数据(fishname)从“Fish”类发送到主要类“Animal”。我创建了一个对象,并尝试访问子类函数以将数据从子类发送到主类。
我的目标:将我在readFish()中写的任何内容发送到Animal的私人名称char。
代码:
#include <iostream>
using namespace std;
const int STRLEN = 32;
class Animal {
private:
char name[STRLEN];
public:
Animal() { }
Animal(char animalname) { name[STRLEN] = animalname; }
};
class AnimalInWater : public Animal {
private:
public:
AnimalInWater() { }
};
class Fish : public AnimalInWater {
private:
char fishname[STRLEN];
public:
void readFish() {
cout << "The name of the fish: "; cin.getline(fishname, STRLEN);
Animal(fishname); // Is supposed to use the constructor seen in Animal class
}
};
int main() {
Animal a1;
d1.readFish(); // readFish() is in the Fish class, which is under AnimalInWater which is under Animal.
// In other words; the readFish() function is the granddaughter class of Animal.
return 0;
}
答案 0 :(得分:0)
我创建了一个对象,并尝试访问子类函数以将数据从子类发送到主类。
你所说的课就好像是对象一样。如果您的实例为Fish
,那么同时是AnimalInWater
和Animal
的实例。
如果您希望readFish()
为name
分配一些值,请在name
类的该方法中将其分配给Fish
。
答案 1 :(得分:0)
一点一点地看着这个。
变量char
是STRLEN
的数组,并且有STRLEN
个插槽
插槽编号从0到name[0]
- 1。
表达式name[STRLEN]
代表第一个插槽
表达式animalname
表示超出数组末尾的一个。
变量animalname
是单字符
构造函数将值放在name[STRLEN]
内的插槽{{1}}中,该插槽超出了数组。