类和子类 - 将派生类中的数据发送到主类

时间:2018-02-05 22:09:59

标签: c++ class

我正在尝试将数据(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;
}

2 个答案:

答案 0 :(得分:0)

  

我创建了一个对象,并尝试访问子类函数以将数据从子类发送到主类。

你所说的课就好像是对象一样。如果您的实例为Fish,那么同时是AnimalInWaterAnimal实例。

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

答案 1 :(得分:0)

一点一点地看着这个。

变量charSTRLEN的数组,并且有STRLEN个插槽 插槽编号从0到name[0] - 1。

表达式name[STRLEN]代表第一个插槽 表达式animalname表示超出数组末尾的一个。

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