草庐IT

pseudo-typedef

全部标签

c++ - 这一堆 typedef 应该是私有(private)的还是公共(public)的?

我正在编写一个表示图形的类,所以我编写了以下标题classGraph{public:Graph();Graph(intN);voidaddVertex();voidaddEdge(VertexNumv1,VertexNumv2,Weightw);std::pairshortestPath(constVerticesGroup&V1,constVerticesGroup&V2);private:typedefintVertexNum;typedefintWeight;typedefstd::pairEdge;typedefstd::vectorPath;typedefsize_tPath

c++ - 从派生类中的模板化基类使用 typedef/using

在访问using从具有模板化基类的基类开始,如果没有别的,我遇到了冗长的问题。在下面的代码中,派生类尝试使用my_type来自其基类。templateclassBase{public:usingmytype=T;};templateclassDerived:publicBase{public://usingthebase'smytypeherestatictypenameBase::mytypefunc(){return0;}};然而,在实践中,我发现这是一个非常多的字符,因为它看起来应该更简单。如果Base类没有被模板化,那么它就不需要或类型名称(显然)。在我的实际问题中,我有大量从

c++ - 关于 typedef 的帮助 - 基本的 c/c++

我一直在研究一些代码,并遇到了一个以某种方式打扰我的声明。typedefGLfloatvec2_t[2];typedefGLfloatvec3_t[3];从我的角度来看,这样的声明typedefunsignedlongulong;意味着ulong被认为是unsignedlong现在,下面的语句是否意味着vec2_t[2]等同于GLfloat??typedefGLfloatvec2_t[2];很可能,可能不是预期的含义。如果有人为我解决这个问题,我将不胜感激。谢谢 最佳答案 基本上typedef与普通的C声明具有完全相同的格式,但它为

c++ - 为每个变量创建一个新的 typedef 有什么意义?

标题有点夸张,还是没看懂作为一个最基本的例子,从time.h中获取size_t类型:size_tisdefinedintheheaderfile(amongothers)asanunsignedintegraltype.甚至将unsignedint重命名为size_t有什么意义?这些事情通常会使代码更难理解,因为它们会让开发人员寻找那些类型声明来理解,即使它是重命名的基本类型,或者可能是某些类/结构。然而,我看到这在不同的图书馆中已经做了很多。 最佳答案 What'sthepointofevenrenamingunsignedint

c++ - 为什么我应该在 C++ 中使用 typedef?

假设我有:set>m_intset;这行得通,但现在我将其更改为typedef,最后我得到了两行代码:typedefset>SetInt;SetIntm_intset;这样的typedef有什么好处?我是否正确使用它? 最佳答案 使用typedef的一些优点:简化:现在,每次您通常需要set>,您只需输入SetInt.如果您只使用一次集,这没什么大不了的,但如果您有同一集的多个实例,或者需要访问其迭代器,则较短的形式更易于阅读和输入。澄清:set>没有告诉我有关变量的用途的任何信息,只是它是一组整数。使用typedef,您可以选择一

c++ - 转发声明 typedef 保护

我正在尝试转发声明一些仅在类中私下使用的变量,以限制在使用该类时必须包含的header数量。可悲的是,我想要转发声明的类结果是一个typedef,它是一个我无法编辑的第3方库(为了参数)这个问题ForwarddeclarationofatypedefinC++证明唯一的解决方案是:只包含标题并接受它是不可能的转发声明将被类型定义的内容并添加我自己的类型定义看看第二个解决方案,有什么方法可以保护我自己免受库中typedef更改的影响,以便编译器在类被删除/重命名时提示typedef而不是使用未定义的类型并make它不再是令人头疼的维护问题? 最佳答案

c++ - 没有 typedef 的运算符 member_function_pointer_type()?

是否可以在不使用typedef的情况下创建一个operatormember_function_pointer_type()(即通过内联指定成员函数指针的类型)?例如,在实现SafeBoolIdiom时:classFoo{typedefvoid(Foo::*bool_type)()const;public:operatorbool_type()const;};是否可以在声明运算符时直接写出bool_type的类型?如果是,怎么办? 最佳答案 这似乎是唯一不能在不使用typedef的情况下声明(类型转换)operator的情况。如果它是

c++ - Typedef 相互引用的 STL 容器

我有一个std::map和一个std::list.我希望容器中的元素具有相反容器的迭代器类型。我如何对它们进行类型定义?示例:typedefstd::mapMyMap;//^MyListnotdefined.typedefstd::listMyList;当然颠倒两条线是行不通的。我也试过typedefstd::map::iterator>MyMap;typedefstd::listMyList;但这也不起作用。更新:我需要这个的原因是通过订单的两个方面来跟踪键/值对。假设我有一个map.它按KEY排序,通过键查找值很快。但我也想在添加值时跟踪这些值。我想知道最近最少添加哪个值。为此,我

c++ - 成员函数的typedef可以用辅助模板类来简化吗?

我最近发现使用以下辅助类可以简化函数指针语法:templatestructFun{typedefSig*Ptr;};它允许我指向void()的指针如下:typedefFun::Ptrfun_ptr;fun_ptrf=foo;我想创建一个类似的实用程序来创建成员函数指针的typedef。它将允许以下语法:structFoo{voidbar(){}};typedefMemFun::Ptrbar_type;bar_typeb=&Foo::bar;但是,我无法理解typedef语法:templatestructMemFun{//HowtouseTandSigtocreatememberfunc

c++ - 使用 SWIG 在 Python 中访问 C++ typedef

我有一个C++API,我想用Python包装。我想调用一个包装的C++函数myfunc,将以下C++typedef作为参数/*my_header.h*/namespacemy_namespace{typedefstd::vectorBar}其中Foo是一个C++类。我设法包装了函数和底层类Foo,但我不知道如何创建Foo的vector。我将.h文件包含在我的SWIG.i文件中,如下所示/*my_interface.i*/%{#include"my_header.h"typedefmy_namespace::BarBar;%}%include"my_header.h"我还尝试在SWIG中