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