草庐IT

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++ 语言功能(特别是在函数声明中)

我想知道C++中是否有一个宏或语言元素表示与函数中的返回值相同的类型。例如:std::vectorMyclass::CountToThree()const{std::vectorcol;col.push_back(1);col.push_back(2);col.push_back(3);returncol;}而不是行std::vectorcol;有某种语言元素吗?我知道这很琐碎,但我只是厌倦了输入它;-)。 最佳答案 你可以做两件事:Typealiasing,using或typedef。typedefstd::vectorIntVe

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

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

c++ - 破译 C/C++ 函数指针类型定义的工具

我记得曾经看到一个网站,它破译了复杂的C++typedef,包括返回函数指针的函数指针,这些函数返回一个数组......它将把这样的定义变成可读的英文文本:»指向函数的指针,返回一个int指针数组,以一个long和一个回调函数(以一个int为参数)«。(类似的东西)typedefint*(*f)(long,void(*)(int))[];有人记得那个工具/网站吗?非常感谢任何提示 最佳答案 我想你在找https://cdecl.org/.您可以在https://github.com/ridiculousfish/cdecl-bloc

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

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