gpt4 book ai didi

c++ - 从基本/父数组调用子成员?

转载 作者:行者123 更新时间:2023-11-28 07:01:53 25 4
gpt4 key购买 nike

所以,我有一个基类和一个子类。有点像

Class Device 
{
double read();
}

Class Relay : Public Device
{
void toggleSwitch();
}

Class Sensor : Public Device
{
int getValue();
}

我有一个数组来存储对象,这样我就可以跟踪它们

Device *devices[10];
devices[0] = new Relay();
devices[1] = new Sensor();
etc…


devices[0]->toggleSwitch(); // error

我可以从任何这些设备调用成员 read(),因为 read() 在基类中。那么如何在 Relay 中调用 toggleSwitch() 呢?我会收到一条错误消息,指出“class Device”没有名为“toggleSwith”的成员。这是有道理的,因为“设备”数组是设备。那么如何调用子成员呢?我试过转换但没有成功。谢谢。

最佳答案

另一种解决方案是,当您知道 device[i] 是指向 Relay 的指针时,只需转换它即可。

((Relay *)devices[i])->toggleSwitch();

虚函数的缺点是增加了开销(更多的内存使用和更慢的代码),但只有当你为你的类分配大量(数百万)个实例时才会出现问题。您还需要修改基类(如果它是第三方代码,您可能不希望这样做)。

关于c++ - 从基本/父数组调用子成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22314707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com