草庐IT

default-interface-member

全部标签

c++ - has_trivial_default_constructor 是如何工作的?

谁能给我解释一下has_trivial_default_constructor是如何工作的?我试图在提升实现中找到它,但不幸的是宏太多,我迷路了......如何使用模板检测C++中的trivial_default_constructor?我需要一个C++03而非11的示例。#include#includestructA{A(){}inta;//std::vectorb;};intmain(intargc,char*argv[]){structB{std::vectorb;};boolresult=boost::has_trivial_default_constructor::value

c++ - 为什么 Member Detector fallback 必须是 int?

我以为我正在理解这个类(从这里https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Member_Detector):templateclassDetectX{structFallback{intX;};//addmembername"X"structDerived:T,Fallback{};templatestructCheck;typedefcharArrayOfOne[1];//typedefforanarrayofsizeone.typedefcharArrayOfTwo[2];//typedefforanarrayofsizetw

c++ - 可以在不重新编译客户端代码的情况下扩展虚拟接口(interface)吗?

库提供具有虚函数的类。是否可以在不重新编译动态链接到库的二进制文件的情况下使用新的虚函数扩展此类?我相信这在标准中是不可能的。是否有平台允许这样做?如果新函数只添加到类主体的末尾,会不会更容易? 最佳答案 该标准不关心二进制兼容性。它与类有关,并且通过将类的定义从一个翻译单元“更改”为另一个翻译单元,您确实会调用未定义的行为。大多数编译器确实允许在不需要重新编译的情况下进行一些更改,但是列表很小......对于这个我会说这可能是不可能的,取决于先验知识派生类。我预见的问题在于编译器通常对虚拟表进行的优化。当你创建一个带有虚函数的类时

c++ - 重载方法以实现接口(interface)的特殊情况

免责声明:我无法清楚地描述我正在尝试做什么,所以我希望这个例子比我的解释更清楚!请建议任何重新措辞以使其更清楚。:)是否可以使用比接口(interface)所需的版本更具体的版本来覆盖函数,以便与一般情况分开处理该接口(interface)中方法参数的子类?(下面的例子和更好的解释......)如果不能直接完成,是否有一些模式可以用来达到类似的效果?例子#includeclassBaseNode{};classDerivedNode:publicBaseNode{};classNodeProcessingInterface{public:virtualvoidprocessNode(B

c++ - 成员(member)检测代码说明

这不是整个概念,而是它用来确定类是否具有n数据成员的方法之一。这是完整的代码;SFINAE用于成员检测的普通用法。templatestructhas_X{structFallback{intX;};structDerived:T,Fallback{};templatestructS;templatestaticchar(&f(S*))[1];templatestaticchar(&f(...))[2];public:conststaticboolvalue=sizeof(f(0))==2;};Derived继承自Fallback和T的部分让我感到困惑,因为当我们重载f,&C::X是&D

abstract class 和 interface 有什么区别

目录abstractclass和interface有什么区别1.抽象类1.1抽象类的格式1.2抽象类注意事项2.接口2.1接口的格式2.2接口可以多继承2.3接口的实现(implements)3.异同abstractclass和interface有什么区别1.抽象类抽象类:声明方法的存在而不实现的类,如果一个类中没有包含足够的信息来描绘一个具体的对象,它只能被继承,派生出子类,这样的父类就是抽象类。1.1抽象类的格式[public]abstractclass类名[extends父类][implements接口列表]{//属性声明及初始化;//抽象方法的声明;//非抽象方法声明及方法体;}1.2

c++ - 通过 Gnuplot 的管道接口(interface)从 C/C++ 可视化

我正在尝试使用gnuplot的管道接口(interface)(一个标准的gnuplot_i.{cpp,hpp}),以便生成在另一个用C++编写的程序中不断变化的值的实时显示。这工作正常,但我想看看是否有人有任何改进建议。此实现包含一个方便的方法,可以将单个vector和2个vector绘制为二维图。它通过调用mktemp函数的标准库写入一个临时文件,然后将其用作gnuplotplot调用的输入来实现这一点。这会生成太多的临时文件,并且当图上的更新率很高时(也许IO在某一点上受到限制)似乎无法正常工作。我决定在绘图调用中使用“-”伪文件,并将vector直接发送到管道(以一行带有“e”的

c++ - 库应该使用使用智能指针的接口(interface)吗?

我开始编写一个库并考虑它的接口(interface)。以前我写的库都使用原始指针(内部和接口(interface)),现在我想试试VS2010自带的智能指针库。接口(interface)应该使用智能指针吗?(可能会迫使图书馆用户也使用智能指针?)如果接口(interface)使用原始指针而库在内部使用智能指针,会不会很困惑?(甚至可能吗?shared_ptr没有release()方法...)两个兼容c++0x的智能指针库(比如boost和VS2010)可以互换使用吗?(假设我使用VS2010编写我的库,用户使用boost)请帮忙:) 最佳答案

c++ - 抽象类作为接口(interface),没有 vtable

我想创建一个抽象类来定义类的一些方法。其中一些应该由基类(Base)实现,一些应该在Base中定义但被Derived覆盖,还有一些应该在Base中是纯虚拟的以强制在Derived中定义。这当然是抽象类的用途。但是,我的应用程序只会直接使用Derived对象。因此,编译器应该在编译时准确地知道要使用哪些方法。现在,因为这段代码将在RAM非常有限的微Controller上运行,所以我很想避免实际使用带有vtable的虚拟类。从我的测试来看,编译器似乎足够聪明,除非必须,否则至少在某些情况下不会创建vtable。然而,有人告诉我永远不要相信编译器:是否有可能将其作为编译的必要条件?下面是一些

keil 报错 *** Target ‘Target 1‘ uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available

问题:***Target‘Target1’usesARM-Compiler‘DefaultCompilerVersion5’whichisnotavailable.这个错误是由于使用的ARM编译器“DefaultCompilerVersion5”不可用导致。原因是新版的keil不在自动下载v5版本的编译器,但是老版本使用的v5,所以需要手动安装v5的编译器。下载v5.06的编译器并添加到keil,下载链接如下:链接:https://pan.baidu.com/s/1HKY34HP4zjkDPGd1ikbX4w?pwd=gych提取码:gych具体操作方法:(参考的是dxh_wds的资料)1.进