草庐IT

Templates

全部标签

c++ - 有什么方法可以解决模板类中的前向声明?

我有一个这样定义的模板类:templatevoidProxyNoOp(T*){}templatevoidProxyDelete(T*ptrT){deleteptrT;}template>classProxy{public:classContainer:publicstd::list{public:Container(){}~Container(){clear();}voidclear(){iteratorclsEnd=end();for(iteratorclsCurrent=begin();clsCurrent!=clsEnd;++clsCurrent){T*ptrT=*clsCurr

C++,前向声明和递归数据类型

我希望能够有一个map,其中的值是指向map的指针。有点像std::map我知道我可以使用constvoid*而不是const_pointer_to_this_map's_value_type。我见过循环数据类型定义的技巧,例如https://gist.github.com/tivtag/1208331或http://qscribble.blogspot.fr/2008/06/circular-template-references-in-c.html但我不确定它们是否以及如何应用于我的案例。他们在那里使用自己的类(顶点和边;A和B),但这里std::map和std::map::val

c++ - clang 不编译我的代码,但 g++ 可以

谁能帮我处理这段代码:#include#includestructnonsense{};templatetypenamestd::enable_if::value,int>::typefo(void*const){return0;}templatetypenamestd::enable_if::value,int>::typefo(void*const){return1;}typedefint(*func_type)(void*);templatevoidrun_me(){staticstructnonsensedata;typedefstd::pairpair_type;std::v

C++单元测试测试,使用模板测试类

我正在做一些C++测试驱动开发。我有一组类做同样的事情,例如相同的输入给出相同的输出(或者应该,这就是我要测试的)。我正在使用VisualStudio2012的CppUnitTest框架。我想创建一个模板化测试类,所以我只编写了一次测试,并且可以根据需要在类中进行模板化,但是我找不到这样做的方法。我的目标:/*twoclassesthatdothesamething*/classClass1{intmethod(){return1;}};classClass2{intmethod(){return1;}};/*onesetoftestsforallclasses*/templateTE

c++ - 如何调用在基类中实现纯虚方法的派生类中的模板化方法?

我有一个带有几个纯虚方法的基类,例如classGenericFunction{public:GenericFunction(){/*Initgenericfunctionstate*/};virtualvoidIterate(short*ps,unsignedcs)=0;virtualvoidIterate(float*ps,unsignedcs)=0;}然后我有一堆实现特定功能的派生类,我想在这些函数的集合上调用Iterate()方法,为每个函数提供一个数据样本block。我只知道调用Iterate()时的数据类型。Iterate()方法对于许多函数来说几乎完全相同,所以我想使用模板

c++ - 是否应该为类成员访问表达式中的依赖类/命名空间名称延迟名称查找?

下面的代码被clang和gcc都拒绝templatevoidf(Tt){t.Dependent::f();//clangaccepts,gccrejectst.operatorDependent*();//bothreject}structDependent{voidf();};structA:Dependent{operatorDependent*();};templatevoidf(A);我对标准的阅读表明这两种表达方式都应该被接受。在这两种情况下,Dependent只能是类型名称。在这两种情况下,名称Dependent都将“在对象表达式的类中查找”t。由于t是一个依赖于类型的表达

c++ - 具有不同包含类型的 STL 容器?

假设我有不同类型的结构组件。也许我有TransformComponent和RigidBodyComponent现在,这就是问题所在:我想要类似std::map的东西将组件类型和id映射到组件的位置。ids是将组件链接在一起的东西。我应该为此使用哪种容器?我不能使用std::map>自类型T取决于您用来为第一张map编制索引的类型索引。 最佳答案 您的用例听起来像是多态性的典型使用。您应该知道,任何在单个容器中存储“非同质”类型的尝试都会带来多态性的性能损失。至于您是使用C++提供的“开箱即用”多态性还是寻求自定义解决方案-这完全取决

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++ - 使用类型特征时如何排列文件?

我第一次尝试在C++中实现特征,但我遇到了多个已定义符号的链接错误。errorLNK2005:"public:staticclassstd::unordered_mapconstManagerTrait::Fields"errorLNK2005:"public:staticclassstd::unordered_mapconstManagerTrait::Fields"errorLNK2005:"public:staticclassstd::unordered_mapconstManagerTrait::Fields"errorLNK2005:"public:staticclassst

c++ - 嵌套类作为C++中父类的模板参数

我想将算法实现为派生自纯虚类的类,表示特定算法解决的问题类型。一般的界面是这样的:templateclassISolutionToProblem{public:virtualvoidInit(constA&input,constB¶m)=0;virtualconstB&ComputeSolution()=0;virtual~ISolutionToProblem(){}};实现例如:templateclassMyAlgorithm:publicISolutionToProblem::WorkData,T>{public:structWorkData{/*StuffusingT..