类和子类 - 从派生类发送到主要类的数据

Classes and subclasses - sending data from derived class to primary class

本文关键字:数据 子类 派生      更新时间:2023-10-16

我正在尝试将数据(FISHNAME(从类" Fish"发送到主要类"动物"。我制作了一个对象,并试图访问子类函数以将数据从子类发送到主要类。

我的目标:将我在Readfish((中写的任何内容发送到动物的私人名称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;
}

我制作了一个对象,并试图访问子类函数以将数据从子类发送到主要类。

您正在谈论类,好像它们是对象一样。如果您有Fish的实例,则AnimalInWater实例,也是Animal的实例。

如果您希望readFish()name分配一些值,则只需将其分配给Fish类中的该方法中的name

逐一看这个。

变量namechar的数组,具有STRLEN插槽。
插槽从0到STRLEN -1编号。

表达式name[0]代表第一个插槽。
表达式name[STRLEN]代表一个超过数组末端的一个。

变量 animalname single 字符。
构造函数将animalname内部的值放在插槽name[STRLEN]中,该值超出了数组。