草庐IT

human-interface-guidelines

全部标签

c++ - 与 Java 接口(interface)相比,C++ 中的接口(interface)和虚函数

我有一个关于C++虚函数的问题。virtual关键字用于C++class基类中函数的声明,以通知该函数的子类实现可能因子类而异子类。不同的子类可能有不同的功能实现。我有点不明白。据我目前所见,当您在C++中定义接口(interface)时,它与在Java中定义的接口(interface)不同。其实我不明白C++中接口(interface)这个词是什么意思。您在头文件中将函数指定为virtual。然后基类的子类或派生类可以以任何你想要的方式覆盖它,只要它是一个虚函数。C++中的接口(interface)是头文件吗?干杯 最佳答案 Ja

java - 继承 Java 集合接口(interface)(Set、Map、List 等)的 C++ 等价物是什么?或者扩展 AbstractCollection?

我已经开始使用C++编写代码,来自Java背景(实际上我在我的大学学习了C++,但我们从未接触过STL等)无论如何,我已经到了在各种集合中排列数据的地步,我立即告诉自己“好吧,这是一种集合;这是一个列表,或者一个ArrayList;这是一张map等等。”在Java中,我会简单地让我正在编写的任何类实现Set或Map或List接口(interface);但我可能不会去继承ArrayList或HashSet或其他什么,那里的实现有点涉及,我不想把它们搞砸。现在,我要用C++(使用标准库)做什么?似乎没有Sets、Maps、Lists等的抽象基类——相当于Java接口(interface);

c++ - 在 C++ 中,我希望我的接口(interface) .h 说 int GetSomeInt() const;.... 但实际上方法 *DOES* 更新 "this"。

我正在向const方法添加一些惰性初始化逻辑,这使得该方法实际上不是const。有没有办法让我不必从公共(public)界面中删除“const”就可以做到这一点?intMyClass::GetSomeInt()const{//lazylogicif(m_bFirstTime){m_bFirstTime=false;Dosomethingonce}returnsomeint...}编辑:“可变”关键字在这里起作用吗? 最佳答案 使m_bFirstTime可变:classMyClass{::mutableboolm_bFirstTime

c# - 使用 SWIG 从 C++ 生成 C# 接口(interface)

如何使用SWIG通过SWIG从C++生成C#接口(interface)(或至少是C#可模拟基类)?给定:C++:classIWidget{public:virtualvoidFlob()=0;};classWidget:publicIWidget{public:voidFlob(){};};我想输出C#:publicinterfaceIWidget{voidFlob();}publicclassWidget:IWidget{...}注意:解决方案不一定是接口(interface),但我确实需要能够使用模拟框架(例如Moq或Rhino.Mocks)来模拟C#Widget类的基类。我的尝试

c++ - 使用非托管接口(interface)包装托管

我有一个公开一些接口(interface)的非托管库。用户可以实现接口(interface)并将它们与自定义实现一起粘贴到库中。我想为这个库提供一个托管包装器。用托管接口(interface)包装非托管接口(interface)很容易。但就我而言,我想支持各种接口(interface)的用户实现,这意味着我需要采用接口(interface)的托管实现并使用其非托管对应项将其包装,然后再将其发送到库的非托管部分的深处。我试过类似的方法:classUnmanagedWrapper{DoSomething(){m_clr.DoSomething();}IManaged^m_clr;}但我不能

c++ - 为什么 C++ 不让基类实现派生类的继承接口(interface)?

这就是我要说的//someguywrotethis,usedasaPolicywithtemplatesstructMyWriter{voidwrite(std::vectorconst&data){//...}};在一些现有的代码中,人们没有使用模板,而是接口(interface)+类型删除classIWriter{public:virtual~IWriter(){}public:virtualvoidwrite(std::vectorconst&data)=0;};其他人想要同时使用这两种方法和写作classMyOwnClass:privateMyWriter,publicIWri

python - WindowsError 异常访问冲突 - 在简单的 python c++ ctypes 接口(interface)中

我有一个非常简单的测试用例,我无法开始工作,我正在尝试使用ctypes将c++与python连接起来。我在使用double时遇到错误,在这种情况下尝试在C++中使用“cout”。错误是:WindowsError:exception:accessviolationwriting0x.....问题出在以下c++代码的cout行:#include"testgeo.h"#includeTestGeo::TestGeo():td_(0),ti_(0){std::cout它具有以下header(testgeo.h),包括一个外部C部分:classTestGeo{public:TestGeo();~

c++ - 如何将 std::unique_ptr<T> 与返回 int 的接口(interface)一起使用?

我想将open/closePOSIXAPI包装到一个RAII兼容对象中,例如std::unique_ptr。但是open函数返回一个int(即不是HANDLE,它是指向void的指针),并且我不确定如何将std::unique_ptr模板类与int一起使用。有人可以帮帮我吗? 最佳答案 真的,您想要的只是让close(intfileHandle)为您管理,对吗?为什么不创建一个带有为您调用close()的析构函数的简单C++类?我认为这就是您要寻找的行为。std::shared_ptr,friend只处理用new创建的堆指针,会调用

c++ - 有选择地禁用第三方库的 C++ Core Guidelines Checker

我想尝试使用CoreGuidelinescheckertool在VS2015下的C++11/14项目上。在我的代码中,我使用了很多来自Boost的库,它们触发了很多警告。我不关心这些警告,因为Boost正在做很多非常聪明的工作,并且编写库的目的不是为了符合指南,它们大多早于指南。但是面对如此多的警告,我无法在我的代码中找出真正的问题(至少根据工具)。有没有办法抑制第三方代码的所有警告?也许#includingboostheaders前后有一些属性?我已阅读thispage来自VisualC++团队博客,但我找不到它。 最佳答案 有一

c++ - 静态多态性 : How to define the interface?

下面是我理解的静态多态性的一个非常简单的例子。我不使用动态多态性的原因是我不想阻碍op中PROCESSOR函数的内联。templatevoidop(PROCESSOR*proc){proc->doSomething(5);proc->doSomethingElse();}intmain(){ProcessorYpy;op(&py);return0;}这个例子的问题是:没有明确定义PROCESSOR必须定义什么函数。如果缺少一个,你只会得到一个编译错误。我认为这是不好的风格。它还有一个非常实际的缺点:IDE的在线帮助当然不能向您显示该对象上可用的功能。定义PROCESSOR的公共(pub