草庐IT

c++ - std::vector 的 Typedef 和 ostream 运算符

我创建了一个Chromosome类,它最终只是一个带有ostream运算符的vector包装器,所以我决定改用typedefvector。但是,我在使用模板化的ostream运算符时遇到了问题……这是最好的方法吗?(我见过一些方法,但都没有奏效)templateclassChromosome{public:typedeftypenamestd::vectortype;typedeftypenamestd::pairptr_pair;};template//line19below:std::ostream&operator::type&chromosome){for(autoiter=c

c++ - 类中的typedef

有这样的代码:templateclassSomeClass{typedefboost::shared_ptrsPtr;typedefstd::vectorc;typedefc::iteratorcIt;//hereistheproblem};错误是:main.cpp:23:error:type‘std::vector,std::allocator>>’isnotderivedfromtype‘SomeClass’main.cpp:23:error:expected‘;’before‘cIt’如何在类中使用typedef来模板化参数?编辑:我想通了,对于g++,那一定是:typedeft

c++ - 在详细说明符中使用 typedef 名称

根据($3.4.4)后跟类键的typedef名称是无效的。但我不确定是哪个范围?例如:在下文中,如果在函数内部等block中使用了详细说明符,编译器不会报错。typedefclass{/*...*/}S;//invalidclassS;//okvoidfoo(){classS;}使用typedef-name在本地范围内声明类是否有效,为什么? 最佳答案 7.1.3第3段讲述:Inagivenscope,atypedefspecifiershallnotbeusedtoredefinethenameofanytypedeclaredi

c++ - 我如何为 tr1::unordered_map 定义一个不绑定(bind)模板参数的宏/typedef/etc?

这可能是个有点傻的问题,但我不得不问。我正在尝试在C++中使用unordered_map类,但不是每次都将其作为tr1::unordered_map引用,我只想使用关键字hashMap。我知道typedeftr1::unordered_maphashMap有效,但这种修复了键的数据类型和对应于hashMap的值,而我希望有更多类似以下内容:#definehashMaptr1::unordered_map我可以根据需要定义键和值的数据类型,但这不起作用。以前有人遇到过这个问题吗?谢谢 最佳答案 这是C++11之前的C++所缺少的东西。

c++ - 模板 typedef c++0x

我发现了几个关于C++0x中模板类型定义的问题,这些问题通过using关键字解决;然而,使用GCC4.6.1(运行g++-std=c++0x),我得到以下错误:错误:在“使用”之前需要不合格的id你能帮我找出我哪里出错了吗?几个小时以来我一直在努力解决这个问题......代码:#includetemplateclassGenericSparseVector{protected:std::mapindices_to_values;};templateusingStandardSparseVector=GenericSparseVector; 最佳答案

c++ - 如何以 int 形式访问 BGL 的 vertex_descriptor

我有一个如下所示定义的邻接表。此时我需要访问vertex_descriptor作为int类型。我该怎么做tvertexsource=...;intsource_as_int=???source???我记得以前遇到过同样的问题并解决了它,但不记得是如何解决的,而且BGL文档将其用作引用是无用的,他们应该尝试看看并从Javadocs中学习。另一种可能性是使用vertex_descriptor类型的可能成员函数或为此目的使用一些全局BGL函数……人们永远不知道在哪里寻找它,它们似乎是随机的在制作全局函数或成员函数之间做出选择,如果你问我,这完全是一种直观设计的失败。typedefadjace

c++ - 在没有 typedef 的情况下在 C++ 中返回函数指针时出错

我试图在不使用typedef的情况下返回指向函数的指针,但编译器(gcc)发出了一个奇怪的错误,就好像我无法进行那种设置一样。备注:使用typedef代码有效。代码:voidcatch_and_return(void(*pf)(char*,char*,int&),char*name_one,char*name_two,int&number)(char*,char*,int&){pf(name_one,name_two,number);returnpf;}错误:'catch_and_return'声明为返回函数的函数你能给我解释一下为什么编译器不允许我这样做吗?谢谢!

c++ - std::shared_ptr:带有自定义删除器的 typedef

这个问题在这里已经有了答案:Typedefashared_ptrtypewithastaticcustomdeleter,similartounique_ptr(2个答案)关闭7年前。我正在使用SDL2开发C++应用程序,并希望使用shared_ptr来保存指针内容。所以我做例如这个:typedefstd::shared_ptrSDLWindowPtr;而且我需要在整个过程中使用自定义删除器。是否可以将其包含在typedef中?如果是,如何?删除函数称为SDL_DestroyWindow。如果没有,如何让shared_ptr使用SDL_DestroyWindow作为自定义删除函数?提前

c++ - C++ 包装 C 代码的重复 const 错误

我从C++应用程序中包含并使用了一些C代码,这里是重要的部分:C代码ifdef__cplusplusextern"C"{endif...typedefvoid*problem_type;...intproblematic_fn_proto(constproblem_typeconstarg);ifdef__cplusplus}endif不幸的是,由于duplicate'const'错误,这将无法编译。导致问题的是typedef。如果我只是将函数的原型(prototype)更改为:intproblematic_fn_proto(constvoid*constarg);没有更多的问题。不幸

c++ - 为什么编译器无法区分 typedef 和非 typedef?

抱歉,标题太长了。我在类列表中有一个typedef:templateclassList{//ThinkofaclassIter_withListElem*pCurrentPosandList*pListtypedefconstIter_const_iterator;const_iteratorcbegin()const;};以及在类之外但在头文件内的定义。templatetypenameList::const_iteratorList::cbegin()const{}这会产生错误C2373:Redefinition;不同的类型修饰符我重写了这个函数:templateconsttypen