草庐IT

c++ - C++ 中构造函数注入(inject)的高级配置

我的问题是专门处理通过构造函数的依赖注入(inject)。我了解服务定位器模式、构造函数/setter注入(inject)及其风格的优缺点,但是在选择纯构造函数注入(inject)后,我似乎无法克服一些问题。在阅读了许多关于可测试设计的资料后,包括仔细阅读MiškoHevery的博客(特别是this帖子)后,我处于以下情况:假设我正在编写一个C++程序,并且我已经通过它们的构造函数正确地注入(inject)了我的依赖项。为了可读性,我给了自己一个高级对象,它有一个从main调用的Execute()函数:intmain(intargc,char*argv[]){MyAwesomeProg

java - 我是否应该使用依赖注入(inject)以获得良好的设计和可测试的代码?

我有一个表示图像的类:它称为Photography。构造函数如下所示:Photography::Photography(QStringoriginalPath,QStringappDirectory){this.originalPath=originalPath;this.appDirectory=appDirectory;}该类包含许多方法,如getTitle()、getCaption()、getSize()、isHorizo​​ntal()等有一个名为getThumbnailPath()的public方法,如下所示:QStringPhotography::getThumbnailP

c++ - 为什么会有注入(inject)的类名?

最近,我看到了一个奇怪的C++特性:注入(inject)类名。classX{};Xx1;classX::Xx2;//classX::XisequaltoXclassX::X::Xx3;//...andsoon...但我不明白为什么需要此功能。是否有任何实践需要此功能?而且我听说旧C++中不存在此功能。那么,它是什么时候推出的呢?C++03?C++11? 最佳答案 注入(inject)的类名表示X被声明为X的成员,所以里面的名字查找X总是找到当前类,而不是另一个X可能在相同的封闭范围内声明,例如voidX(){}classX{publ

c++ - 将函数注入(inject)子类

是否可以在C++14中做这样的事情。我有一个基类如下:#includeclassAbstractElement;classConcreteElement;classSuperConcreteElement;classB{public:voidbar(AbstractElement*){std::coutfoo();//PrintsConcreteelement}正如您在//1和//2中看到的,函数的主体完全相似。但是我不能完全将它移动到基类中,因为取决于this的静态类型。尽管如此,每次我需要添加AbstractElement的子类时,我都不想编写完全相同的代码。因此,我需要某种机制来

c++ - DLL注入(inject)记事本

我想在记事本中显示一个消息框,所以我找到了一个简单的dll注入(inject)示例。注入(inject)器本身不是我的并且似乎工作正常(获取进程的id,创建一个远程线程,获取dll文件的绝对路径)。我认为问题在于dll的实现。项目在没有任何警告的情况下编译,但没有达到预期的结果。你能看一下并帮助我理解问题吗?(我已经把发布版本的dll放到了injector项目文件夹中)dllmain.cpp://dllmain.cpp:DefinestheentrypointfortheDLLapplication.#include"stdafx.h"#include"dll.h"#include#i

c++ - 现代编译器可以在使用依赖注入(inject)时去虚拟化函数调用吗

当您希望您的代码可测试时,依赖注入(inject)是一种非常重要的模式,它一直在大型C++项目中使用。这是一个简单的例子://Copyright2019GoogleLLC.//SPDX-License-Identifier:Apache-2.0classFooInterface{public:virtualvoidf()=0;virtual~FooInterface()=default;};classFoo:publicFooInterface{public:voidf()override{/*Actualwork*/}};classMockFoo:publicFooInterface

c++ - 如何使用 doxygen 记录好友注入(inject)功能?

给定如下示例中的一些代码:classMyClass;classInjector{/***@briefMyClassaddition.*/friendMyClassoperator+(MyClassa,MyClassb){...}};classMyClass:privateInjector{};如何让doxygen在MyClass类的文档页面包含operator+()的文档?从功能上讲,它显然属于那里。是否有一些通用方法可以通过ADL提供doxygen文档功能?现实世界中的一个有用示例:我希望doxygen包含boost/operators.hpp中的基类提供的运算符。

C++依赖注入(inject)多态性

我有一个关于使用多态类进行依赖注入(inject)的最佳实践的问题。我是C++的新手,所以如果这是一个明显的问题,请原谅我。假设我有一个Runner类,它需要接收两个对象,一个Logger和一个Worker。Logger是一个抽象类,有两个子类,比如FileLogger和SocketLogger。同样,Worker是一个抽象类,有两个子类,比如ApproximateWorker和CompleteWorker。Runner类将从main()创建,并将基于配置文件或类似文件创建Logger和Worker。我已经阅读了很多有关SO和其他地方的资料,普遍的看法似乎是更喜欢堆栈分配的对象并通过引

c++ - 将实现注入(inject)到单个多功能接口(interface)类 - 许多 CRTP 类?

如何创建许多类来充当接口(interface)类的实现者,同时尽可能避免v-table成本,并仍然启用对接口(interface)的静态转换?对于简单的情况,可以像下面的例子那样实现。例子图书馆代码:-classI{//interfacepublic:virtualvoidi1()=0;};templateclassRouter:publicI{public:virtualvoidi1()final{//inrealcaseitisverycomplex,butinthecoreiscalling:-static_cast(this)->u1();}};用户代码:-classUser:

vue中provide、inject的使用方法(图文示例)

查看本专栏目录关于作者还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信,一起交流。热门推荐内容链接1openlayers从基础到精通,300+代码示例2leaflet热门分解学习教程,150+图文示例3cesium从0到1学习指南,200+代码示例4mapboxGL从入门到实战,150+图文示例5canvas示例应用100+,揭密底层细节6javascript从基础到高级,示例展示20