gpt4 book ai didi

运行时的 C++ 变量类型选择

转载 作者:太空狗 更新时间:2023-10-29 23:36:57 24 4
gpt4 key购买 nike

我正在升级为特定硬件接口(interface)编写的旧应用程序。我现在需要为现有应用程序添加对现代硬件的支持。

为此,我想为每种硬件类型创建一个类,并在用户选择系统中的硬件时为一种类型或另一种类型分配一个变量。

例如:

HardwareType1 和类 HardwareType2 都具有相同的成员函数。

object HW;  
if (userHwType = 1)
// initialize HW as a HardwareType1 class
}
else{
// initialize HW as a HardwareType2 class
}

现在,每次与硬件交互时,我都可以在整个代码中使用 HW.doSomething() 而无需硬件类型条件。

我确定这是非常基本的,但老实说,我什至不知道这叫什么,也不知道要搜索什么术语。

谢谢!

最佳答案

创建一个抽象基类,并从中派生两个具体类:一个实现 type1,另一个实现 type2:

class Hardware
{
public:
virtual ~Hardware() {};
virtual void doSomething() = 0;
};

class Hardware1: public Hardware
{
public:
void doSomething() { // hardware type1 stuff. }
};


class Hardware2: public Hardware
{
public:
void doSomething() { // hardware type2 stuff. }
};

然后创建必要的实例:

std::unique_ptr<Hardware> hardware(1 == userHwType ? new Hardware1() : 
new Hardware2());

hardware->doSomething();

如果您的编译器不支持 C++11,则 std::unique_ptr您将无法使用。另一种智能指针是 boost::scoped_ptr (或 boost::shared_ptr )。

关于运行时的 C++ 变量类型选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11196851/

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