草庐IT

CURLOPT_INTERFACE

全部标签

c++ - 强制接口(interface)的模板

是否可以创建一个模板来接受实现特定接口(interface)的类型?例如,我想对模板用户说:你可以在我的容器中存储任何东西,只要它实现了Init()和Destroy()方法。谢谢 最佳答案 BoostConceptChecklibrary提供了概念的C++0x功能的有限子集(有意但遗憾地被砍掉了)。.您可以通过创建conceptcheckclass来利用它用于您所需的界面。 关于c++-强制接口(interface)的模板,我们在StackOverflow上找到一个类似的问题:

C++:转换为不属于基类的接口(interface)

我有一系列代表“智能”map元素的类:MapTextElement、MapIconElement等。这些类扩展了各种Qt图形项类,但也提供了通用的功能,例如返回专用于每个类的属性面板的抽象工厂方法。我已经在纯虚拟类MapElementInterface中声明了这些常用方法。然后我的类乘法继承适当的Qt基类和接口(interface):classMapTextElement:publicQGraphicsTextItem,publicMapElementInterfaceclassMapIconElement:publicQGraphicsItem,publicMapElementInt

c++ - "node"是 ADT 吗?如果有,它的接口(interface)是什么?

节点对于实现ADT很有用,但“节点”本身是ADT吗?如何实现“节点”?维基百科在其关于节点的(简短)文章中使用没有方法的普通旧结构。我在node上搜索,试图找到一篇关于它们的详尽文章,但我发现的大部分文章都是在讨论用节点实现的更复杂的数据类型。什么是节点?一个节点应该有链接到其他节点的方法,还是应该留给拥有这些节点的任何人?一个节点甚至应该是它自己的独立类吗?或者将其作为内部结构或内部类包含在内就足够了吗?他们是否过于笼统,甚至无法进行这种讨论? 最佳答案 节点是一个非常通用的术语。本质上,节点是图中的一个顶点-或网络中的一个点。关

c++ - 从工厂函数返回 std::unique_ptr<T> 创建纯虚拟接口(interface)的完全隐藏实现

我正在阅读SmartPointerProgrammingTechniques在boost文档中提供。在“usingabstractclassesforimplementationhiding”部分,他们提供了一个很好的习惯用法来完全隐藏纯虚拟接口(interface)背后的实现。例如://Foo.hpp#includeclassFoo{public:virtualvoidExecute()const=0;protected:~Foo()=default;};std::shared_ptrMakeFoo();和//Foo.cpp#include"Foo.hpp"#includeclass

c++ - 在 C++ 中,是否可以实现推进使 "current"元素无效的迭代器接口(interface)?

我正在设计一个C++接口(interface),允许用户迭代从文件解码的对象。这个解码过程有点慢。我正在考虑为此使用迭代器接口(interface),但我想避免任何不必要的复制,所以我正在考虑(用户方面):for(constauto&object:file){//youcanaccessthemembersof`object`herestd::cout前面使用示例中的object是对迭代器实例内部对象的引用。这是错的吗?您会在这里建议哪些其他惯用界面?我想到了一个流接口(interface)(想想std::istream),但是据我所知,读取数据的方法也返回拷贝(它们提取字符)。

C++ 策略设计模式,制作接口(interface)数组

实现策略模式后,我想创建一个接口(interface)类型的数组,然后我可以向其中添加任何具体类型。对于那些不知道策略模式的人:http://en.wikipedia.org/wiki/Strategy_pattern在这个特定的示例中,我想制作一个StrategyInterface数组,然后我可以用具体类型的A、B和C填充它。但是,因为这是一个抽象类,所以我无法完成它。有没有办法在不删除抽象方法的情况下做到这一点,或者这是完全不可能的? 最佳答案 让数组存储指向接口(interface)类型的指针:typedefstd::vect

c++ - 为什么 Visual C++ 接口(interface)不能包含运算符?

根据MSDNdocon__interface,VisualC++接口(interface)“不能包含构造函数、析构函数或运算符。”为什么接口(interface)不能包含运算符?返回引用的get方法之间有那么大的区别吗:SomeType&Get(WORDwIndex);和重载的索引器运算符?SomeType&operator[](WORDwIndex); 最佳答案 __interface修饰符是一个VisualC++扩展,用于帮助实现COM接口(interface)。这允许您指定COM“接口(interface)”并强制执行COM接

接口(interface)的 C++ 模板特化

为什么编译器在运行以下代码时不选择接口(interface)模板?是否需要额外的声明/提示,或者这通常不起作用?我只是好奇这是否真的可能。classInterface{public:virtualvoidMethod()=0;virtual~Interface(){}};classDerived:Interface{public:voidMethod(){coutstructSelector{staticvoidSelect(T&o){coutstructSelector{staticvoidSelect(Interface&o){o.Method();}};inti;Selector

c++ - 在单个接口(interface)后面隐藏多个实现

我知道Strategy和AbstractFactory设计模式-但是它们不能解决我当前的问题:我正在创建一个提供非常基本的GUI的C++库。但是我希望用户能够在编译时选择使用哪个GUI库(比如Qt或FLTK)来实际呈现GUI。然而,用户应该只需要了解我的库中的方法。使用Qt后端或FLTK后端应该可以在不进行任何更改的情况下编译相同的代码。我想到了这样的事情:classA{//dothingsthatarenotspecifictoQTorFLTKhereastherearemany//methodsIwillneedindependentofthebackend}classQT_A:p

c++ - 如何检查模板模板类的接口(interface)

我试图根据模板模板参数是否定义了类型type来使用SFINAE重载模板类(例如std::remove_reference有一个type成员类型别名),但我想不出这样做的好方法。比如我想做的templateclassTrait>usingEnableIfHasTypeMember=std::void_t;templateclassTrait,typenameOtherStuff,EnableIfHasTypeMember*=nullptr>classSomething{...}但这给了我一个编译器错误。有什么方法可以检查模板模板参数的接口(interface)吗?