gpt4 book ai didi

c++ - 在 C++ 中使用接口(interface)进行依赖注入(inject)

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

假设我有以下抽象类并将其用作 C++ 中的“接口(interface)”:

class IDemo
{
public:
virtual ~IDemo() {}
virtual void Start() = 0;
};


class MyDemo : IDemo
{
public:
virtual void start()
{
//do stuff
}
};

然后在需要有接口(interface)句柄的类中(通过注入(inject)的具体类):

class Project
{
public:
Project(IDemo demo);

private:
IDemo *_demo;
};

我的意图是通过Project的构造函数来分配具体的Demo类。此代码无法编译,因为无法实例化 IDemo。有什么建议么?提前致谢。

最佳答案

尝试:

 Project::Project(IDemo* demo)
: _demo(demo)
{}

但是如果演示对象在项目的生命周期内永远不会改变,那么我更愿意通过引用传递:

class Project
{
public:
Project(IDemo& d)
: demo(d)
{}
private:
IDemo& demo;
};

然后像这样使用它:

int main()
{
MyDemo demo;
Project project(demo);
}

关于c++ - 在 C++ 中使用接口(interface)进行依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5585436/

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