草庐IT

半公开

全部标签

c++ - 在我的命名空间中公开外部库类时使用 typedef 或 using 关键字

我想将外部库中的类公开给我库的用户。具体来说,我想将类“导入”到我的命名空间中,这样用户就不需要知道我在幕后使用的是什么库。通常,我似乎可以通过使用typedef或简单地通过using类来完成此操作。是否有任何理由选择一种方法而不是另一种方法(或做其他事情)?(我的学历好像有点差距:))例如:我想创建一个使用Boost::Asio的串口管理器。namespaceMySerialManager{//shouldIuseatypedeftypedefboost::asio::serial_port_base::flow_controlflow_control;//orausing...us

c++ - 将 COM 事件公开给 VBScript (ATL)

我使用“ATL简单对象”向导用ATL在C++中构建了一个COM服务器DLL。我关注了微软的ATLDLLCOMServer例子。一切正常,除了一件事:我没有在VBScript中接收COM事件。我确实收到了C#中的事件。我在早期基于MFC的实现中使用VBScript处理事件作为ActiveX控件。我的控件是这样定义的:classATL_NO_VTABLECSetACLCOMServer:publicCComObjectRootEx,publicCComCoClass,publicIConnectionPointContainerImpl,publicCProxy_ISetACLCOMSer

c++ - 有没有一种方法可以从独立的 C++ 程序中调用 R 而无需公开源代码

我们考虑在我们的应用程序中使用统计库包,并想知道是否可以在不发布我们应用程序源代码的情况下使用R。谢谢。托拜厄斯 最佳答案 您应该明确询问律师(或者知识产权部门的人员)。但是,这是我的2ct:应该可以用同样的方式为Linux编写闭源程序。非常强调您正在谈论2个程序(R和您的程序)这一事实的解决方案是使用R服务器维基百科总结了关于whetherlinkingimpliestheresultisaderivedwork的讨论.毫不奇怪,FSF的观点是链接是动态的还是静态的无关紧要。毕竟,他们说如果允许将具有非自由(不兼容)许可的程序链接

c++ - 是否可以通过在单元测试中定义我自己的 PRIVATE 宏来公开私有(private)成员?

我确实需要测试C++类的私有(private)成员方法。因为它是私有(private)方法并且我不想将它更改为protected,所以我不能通过创建子类并添加using声明来使其公开。所以如果我定义一个宏PRIVATE来替换private关键字。这是解决这个问题的好方法吗?#if__UNITTEST__#definePRIVATEpublic#else#definePRIVATEprivate#endifclassA{PRIVATE:voidf();}; 最佳答案 使用宏来改变C++关键字的含义是一个极其糟糕的主意。它不仅会使您的读

c++ - 将 QObject 类公开到 qml 时,在 Qt 中管理内存的正确方法?

我使用C++来编写我的大部分程序逻辑。我喜欢将C++类公开到QML中,以便QML可以使用JS来完成许多复杂的工作。然而,问题来了:如果C++函数返回一个QObject*Q_INVOKABLEQObject*parseJson(constQString&someArguments){returnnewSomeClassExtendsQObject(someArguments);}然后分配给JS变量并使用varresult=exposingCppObj.parseJson("I'mArguments");result.someMemberFunction(...);.....如果我用del

c++ - 在 boost::python 中公开 boost::scoped_ptr

我收到一个编译错误,说scoped_ptr的复制构造函数是私有(private)的,代码片段如下:classa{};structs{boost::scoped_ptrp;};BOOST_PYTHON_MODULE(module){class_("s");}虽然这个例子适用于shared_ptr。如果有人知道答案,那就太好了。谢谢 最佳答案 boost::scoped_ptr的语义禁止复制,而shared_ptr旨在被复制。您得到的错误是编译器告诉您某些代码(宏扩展?)正在尝试复制scoped_ptr但库不允许进行复制。

c++ - 如何使用 QDeclarative 将 QMap 公开给 QML

如何将QMap从C++公开到QML?使用QList我可以使用QDeclarativeListProperty。 最佳答案 您可以将其转换或更改为QVariantMap。在QML中,您可以将QVariantMap实例用作普通的Javascript对象。classMyClass:publicQObject{Q_OBJECTpublic:Q_INVOKABLEQVariantMapgetIntMap(){QVariantMaprval;foreach(QStringkey,m_intMap.keys()){//inthasanimplic

c++ - 检查 C++ 类是否公开继承自带有匿名参数的模板类

类似于thisquestion,我如何测试一个类Impl公开继承自模板类BaseTempl(即classImpl:publicBaseTempl{...};),而不指定模板参数?但是,与上述问题不同的是,如果继承不是公开的,我希望测试仍然可以编译(并返回false)。理想情况下,代码允许我做这样的事情:classalpha:publicBaseTempl{};classbravo:BaseTempl{};classcharlie{};classdelta:publicBaseTempl,publiccharlie{};classecho:publicdelta{};intmain(){

c++ - 如何创建一个隐藏多层 vector 并将其公开为单个范围的 Boost.Range?

我有一个无法修改的遗留类层次结构。由于外部库的要求,我需要为Line和Ring定义Boost.Ranges,其中两者都只在一次运行中公开点(即对于Line和Ring,它应该是一个Boost.RangeofPoints).伪代码来说明:Linel1=Line{{1.0,2.0},{3.0,4.0},{5.0,6.0}}//initLinewiththreePointsLinel2=Line{{7.0,8.0},{9.0,10.0},{11.0,12.0}}//initLinewiththreePointsautolit=boost::begin(l1);//pointstothePoin

c++ - 使用模板公开私有(private) Typedef

我有一个包含私有(private)typedef和几个成员的类功能:classFoo{private:typedefstd::blahblahFooPart;FooPartm_fooPart;...public:intsomeFn1();intsomeFn2();};几个成员函数需要以类似的方式使用m_fooPart,所以我想把它放在一个函数中。我将辅助函数放在匿名中命名空间,但在这种情况下,他们需要知道什么FooPart是。所以,我这样做了:namespace{templateinthelperFn(constT&foopart,intindex){...returnfoopart.