C++ 类和子类-将数据从派生类发送到主类

C++ 类和子类-将数据从派生类发送到主类,c++,class,C++,Class,我正在尝试将数据(fishname)从类“Fish”发送到主类“Animal”。我创建了一个对象,并尝试访问子类函数,以将数据从子类发送到主类 我的目标是:将我在readFish()中写的内容发送到动物的私有名称char 代码: #包括 使用名称空间std; 常数int STRLEN=32; 类动物{ 私人: 字符名[STRLEN]; 公众: 动物(){} 动物(char animalname){name[STRLEN]=animalname;} }; 动物类:公共动物{ 私人: 公众: Ani

我正在尝试将数据(fishname)从类“Fish”发送到主类“Animal”。我创建了一个对象,并尝试访问子类函数,以将数据从子类发送到主类

我的目标是:将我在readFish()中写的内容发送到动物的私有名称char

代码:

#包括
使用名称空间std;
常数int STRLEN=32;
类动物{
私人:
字符名[STRLEN];
公众:
动物(){}
动物(char animalname){name[STRLEN]=animalname;}
};
动物类:公共动物{
私人:
公众:
AnimalInWater(){}
};
鱼类类别:公共动物水域{
私人:
char fishname[STRLEN];
公众:
void readFish(){
库特
我创建了一个对象,并尝试访问子类函数,以将数据从子类发送到主类

你在谈论类时就好像它们是对象一样。如果你有一个
Fish
的实例,那么它就是
AnimalInWater
的实例,同时也是
Animal
的实例


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

逐个查看

变量
name
是一个
char
数组,具有
STRLEN
插槽。
插槽编号从0到STRLEN
-1

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

变量
animalname
是单个字符。

构造函数正在将
animalname
中的值放入数组之外的插槽
name[STRLEN]

这是家庭作业…请这样标记。
name[STRLEN]=animalname
不会做您认为它会做的事情。(特别是考虑到
animalname
是一个普通的
char
。我试着把它标记为家庭作业,但它说我在这方面没有足够的声誉。你真的不明白Arnav的意思吗?STRLEN部分应该设置长度,不是吗?我收回我之前的评论,对不起…养成使用
std::st的习惯使用ring
而不是
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;
}