草庐IT

pseudo-typedef

全部标签

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++ - 为什么编译器无法区分 typedef 和非 typedef?

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

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

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

c++ - 在模板中使用 typedef 和 typename

我想在模板类中定义一个类型名称,我可以在其他地方使用它来引用类中成员的类型。templateclassCA{public://typedeftypenameT::iteratoriterator_type;typedeftypenameTElementType1;//compileerroronthisline//typedefTElementType2;Tm_element;};并像这样使用它:templateclassCDerived:publicCBase{//...};并声明如下对象:typedefCDerivedMyNewClass;这不可能吗?我有一些代码可以在VS2010

c++ - 使用 typedef 别名作为参数重载成员方法

我在C++中重载方法时遇到了一些问题。typedefcharint8_t;classSomeClass{public:…voidMethod(int8_tparamater);voidMethod(charparamater);};因为int8_t是typedefaschar它们只是别名,它们可能引用相同的类型,在这种情况下重载将不起作用。我想让它们同时工作?你能提出相同的解决方案吗?注意:我不想添加模板化方法。错误如下:Error:MultipledeclarationforSomeClass::Method(char) 最佳答案

c++ - 如何为相同类型的 typedef 提供模板特化?

第3方SDK定义了几个typedef,例如:typedefunsignedcharSDK_BYTEtypedefdoubleSDK_DOUBLEtypedefunsignedcharSDK_BOOLEAN它还定义了一个变体类型SdkVariant:classSdkVariant{public:enumSdkType{SdkByte,SdkDouble,SdkBoolean};booltoByte(SDK_BYTE&);booltoDouble(SDK_DOUBLE&);booltoBool(SDK_BOOLEAN&);SdkTypetype();};从这样的变体中检索值看起来像这样(假

c++ - 在 C++ 中使用函数 typedef 定义函数

我正在Windows中实现一项服务。VisualStudio2012具有以下函数typedef:typedefVOIDWINAPISERVICE_MAIN_FUNCTIONW(DWORDdwNumServicesArgs,LPWSTR*lpServiceArgVectors);还有一个函数指针typedef:typedefVOID(WINAPI*LPSERVICE_MAIN_FUNCTIONW)(DWORDdwNumServicesArgs,LPWSTR*lpServiceArgVectors);如何使用typedef定义具有此函数签名的函数? 最佳答案

c++ - typedef 有效, 'using =' 无效

我有一段代码,稍微简化一下,相当于以下编译和工作正常的代码。templatestructfactory_function{typedeffunction(Args...)>type;};templateshared_ptrcreate_function(Args...args){returnmake_shared(args...);}templateintregister_factory(identifierid,typenamefactory_function::typefactory){}intmain(intargc,char*argv[]){register_factory(1

c++ - 如何转发声明我将使用 typedef 创建的类型?

例如,拿这段代码:classFoo;classSomething{Foo*thing;};typedefstd::vectorFoo;这不会编译,因为Foo当typedef时已经是一个类型被击中。但是,我认为它显示了我的用例;我有周期性依赖关系,需要一个来满足另一个,但(目前)其中一件事是typedef。我不想写类似的东西classFoo{std::vectorinside;}因为那时我需要记住inside在每个my_foo.inside.some_method().我还想避免围绕std::vector编写包装器,因为它会有很多样板文件。我如何转发声明我用typedef定义的类型?或者

c++ - 指向类型不完整的 typedef 的指针

有什么方法可以声明一个指向不完整类型的指针,该类型将由实现中的typedef设置?这是我想要的例子:#ifndefTEST_H#defineTEST_Hnamespacestd{classstring;//THISWON'TWORK!}structTest{std::string*value;};#endifstring是basic_string的类型定义,因此示例中的代码将不起作用。我可以声明一个不完整类型的std::basic_string,但这看起来像是一种解决方法。我知道编译器不会为typedef生成符号,对于不同文件中的不同类型,可能会在typedef中使用相同的名称。但由于