草庐IT

c++ - 参数必须是另一个模板类的模板类

好吧,这就是我要实现的目标。我有一个这样的结构:templatestructs{templatestructr{//whatever};};现在我想再写一个模板化结构:templatestructq{//};模板应该接受structr的特化我想访问此实例化的模板参数。为了让自己更清楚:我希望能够写出这样的东西:usingsome_specialisation_of_q=q::r>;some_specialisation_of_qvarname;并且我希望能够访问T1,T2,T3,5,6,7(或传递给专门化s和r的任何其他模板参数)在q的定义中.我的第一次尝试是这样的:templatet

c++ - 在模板化类中定义模板化类的静态数据成员

我在另一个类模板中有一个类模板。内部类有一个静态数据成员。我正在努力为它提供一个定义。以下示例适用于clang3.8但不适用于gcc-7.1templatestructOut{templatestructIn{staticintvar;};};templatetemplateintOut::templateIn::var;gcc给出错误:error:templatedefinitionofnon-template‘intOut::In::var’intOut::templateIn::var;^~~我该怎么做才能让gcc开心?编辑:结果是摆脱了template让这个工作:templat

c++ - 防止用户创建类的未命名实例

这个问题在这里已经有了答案:HowtoavoidC++anonymousobjects(7个答案)关闭6年前。对于许多RAII“守卫”类,实例化为匿名变量根本没有意义:{std::lock_guard{some_mutex};//Doesnotprotectthescope!//Theunnamedinstanceisimmediatelydestroyed.}{scope_guard{[]{cleanup();}};//`cleanup()`isexecutedimmediately!//Theunnamedinstanceisimmediatelydestroyed.}来自this

c++ - 在 hdf 中存储数据集(C++ 类的实例)

我有一个应用程序需要将数据存储到hdf文件。是否可以将数据集存储在实际上是C++对象的hdf中?例如,我想将下面对象a中包含的数据存储到一个hdf文件(hdf4或hdf5)。我可以这样做吗?如果是的话,如果有人能做到这一点,我将不胜感激。谢谢你。classA(){public:A(inti,doublej):i(i),j(j){};~A();inti;doublej;int*ai;vectorb;setValues(inti,doublej){};}voidmain(){A*a;a=newA(10,10.2);//Storethisdatatohdf4orhdf5//A*a2;//no

c++ - 如何在另一个类的对象上调用一个类的函数?

如何在一个类中调用一个方法而不是使用另一个类?我有;classA{public:foo();};classB{public:bar();};主要内容:Adata;//IamcreatinginstanceofclassAdata.bar();//but,Iamcallingamethodofanotherclass//howcanIdothat?注意:我找不到合适的标题。如果您有,请随时分享或编辑 最佳答案 除非这两个类是相关的(通过继承)你不能那样做。成员函数对其所属类的实例执行一些操作。您创建了一个A类的对象,因此您只能通过它调

c++ - 基于节点的类的子位置?

我正在创建对象,ofNode的实例,我们称它们为卡片。每张卡片都有自己的属性,如按钮、文本和图像,它们在卡片.draw()函数中绘制。如果我更改卡片位置,“子项”对象将不会移动。有没有办法将他们的位置绑定(bind)到他们的卡片对象? 最佳答案 使用setParent方法:ofNodeparent;ofNodechild;child.setParent(parent);parent.setGlobalPosition(10,20,30);child.setPosition(100,200,300);ofVec3fpos=child.

c++如何为类的模板化转换运算符指定参数

我正在尝试为类的模板化转换运算符指定模板参数,但我似乎无法获得正确的语法。#includeusingnamespacestd;classC{inti_;public:C(inti):i_(i){}templateintget(){returni_+adder;}templateintoperator()(){returni_+adder;}templateoperatorint(){returni_+adder;}//IfIaddadefaultargumenttooperatorint()'saddertemplateparameterthiscompilesfine//(ofcou

c++ - 具有嵌套类的模板类

1#include2usingnamespacestd;3template4classTop{5public:6classSub{7protected:8Tage;9};10classDerived:publicSub{11public:12voidprintAge(){13cout当我编译代码时,出现以下错误:test.cpp:Inmemberfunction‘voidTop::Derived::printAge()’:test.cpp:13:25:error:‘age’wasnotdeclaredinthisscopecout但如果不是模板,就可以了。很高兴收到您的答复。

c++ - 带有默认参数的模板类的 operator<< 中的 lambda 错误

谁能告诉我这段代码出了什么问题:template//data;templatevoiditerate(Ff)const{for(unsignedi=0;i&a)//Line17{a.iterate([&os](unsignedi,constB&x){osGCC4.8.1和--std=c++11的错误消息:test.cpp:Infunction‘std::ostream&operator&)’:test.cpp:17:41:error:defaultargumentfortemplateparameterforclassenclosing‘operator&)::__lambda0’a.

c++ - 如何找到用于声明类的模板参数的数量?

如何检索用于构造某个类的模板参数的数量?为了阐明我在追求什么,假设我有一些类实例,Aa;,我运行以下命令以获取其名称:boost::units::detail::demangle(typeid(decltype(a)).name())假设此调用的输出是someNamespace::A,int,5,Arg2>.我想找到一种可靠地获取参数数量的方法(即4),考虑到参数本身可能具有任意数量的嵌套模板参数级别(我不想计算-即。我想要将Arg1计为单个参数),并且参数可以是类型和值的任意组合。我愿意通过手动字符串摔跤来完成这项工作,但我更喜欢使用boost的紧凑型解决方案。/STL.有什么想法吗