gpt4 book ai didi

C++ 接受任何结构输入参数

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:17 25 4
gpt4 key购买 nike

我是 C++ 的新手,我想知道我们是否可以接受任何结构作为我们的方法参数。

是这样的:我有一个类(比方说 hw_manager)与硬件类(比方说 hw_device1)交互。目前hw_manager会调用hw_device1的方法,方法的结果会通过struct参数返回(发送struct参数作为引用,并改变引用的值参数)。

在C++中代码应该是这样的:

struct sSensorStatus {
unsigned char sensor1;
unsigned char sensor2;
};

bool checkSensorStatus(struct sSensorStatus &status) {
// Change the status here
}

现在,由于硬件已更改,我需要创建一个新类,假设 hw_device2 具有完全不同的操作。

struct sHardwareStatus {
unsigned char loader;
unsigned char transport;
unsigned char ejector;
unsigned char mouth;
};

bool checkHardwareStatus(struct sHardwareStatus &status) {
// Change the status here
}

而不是更改 hw_manager 中的代码(这将影响该层之上的代码)我打算实现一个接口(interface),假设 IHardware 具有 doAction 方法。思路是这样的:

bool doAction(int cmdID, ????) {
// switch case cmdID
// based on the cmdID, type cast the ???? into the struct
}

我应该在 ???? 中输入什么来接受任何类型的结构?我可以在 C++ 中执行此操作吗?

谢谢

编辑

在硬件内部,我还会有另一个结构,所以我认为使用模板不合适。很抱歉迟到的澄清。

最佳答案

简单地使用多态性。为所有设备创建一个基本类,并将指向它的指针或引用作为参数传递给方法 doAction

编辑(感谢 Koushik 对 elyashiv`s 回答的评论):

实际上,更好的解决方案是使方法 doAction 成为所有设备基类中的虚方法,并且根本不向其传递任何内容。

关于C++ 接受任何结构输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15896172/

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