草庐IT

template-aliases

全部标签

c++ - GCC 问题 : using a member of a base class that depends on a template argument

以下代码不能用gcc编译,但可以用VisualStudio编译:templateclassA{public:Tfoo;};templateclassB:publicA{public:voidbar(){cout我得到错误:test.cpp:Inmemberfunction‘voidB::bar()’:test.cpp:11:error:‘foo’wasnotdeclaredinthisscope但它应该是!如果我将bar更改为voidbar(){coutfoo然后它确实编译,但我不认为我必须这样做。GCC在此处遵循的C++官方规范中是否有某些内容,还是只是一个怪癖?

c++ - GCC 问题 : using a member of a base class that depends on a template argument

以下代码不能用gcc编译,但可以用VisualStudio编译:templateclassA{public:Tfoo;};templateclassB:publicA{public:voidbar(){cout我得到错误:test.cpp:Inmemberfunction‘voidB::bar()’:test.cpp:11:error:‘foo’wasnotdeclaredinthisscope但它应该是!如果我将bar更改为voidbar(){coutfoo然后它确实编译,但我不认为我必须这样做。GCC在此处遵循的C++官方规范中是否有某些内容,还是只是一个怪癖?

c++ - QT : Templated Q_OBJECT class

是否有可能有一个模板类,它继承自QObject(并且在它的声明中有Q_OBJECT宏)?我想为插槽创建类似适配器的东西,它会做一些事情,但插槽可以接受任意数量的参数(参数数量取决于模板参数)。我只是尝试这样做,但出现链接器错误。我猜这个模板类没有调用gmake或moc。有没有办法做到这一点?也许通过显式实例化模板? 最佳答案 模板和Q_OBJECT不能混合使用,但如果您有类型的子集,您可以像这样列出插槽和信号:classSignalsSlots:publicQObject{Q_OBJECTpublic:explicitSignals

c++ - QT : Templated Q_OBJECT class

是否有可能有一个模板类,它继承自QObject(并且在它的声明中有Q_OBJECT宏)?我想为插槽创建类似适配器的东西,它会做一些事情,但插槽可以接受任意数量的参数(参数数量取决于模板参数)。我只是尝试这样做,但出现链接器错误。我猜这个模板类没有调用gmake或moc。有没有办法做到这一点?也许通过显式实例化模板? 最佳答案 模板和Q_OBJECT不能混合使用,但如果您有类型的子集,您可以像这样列出插槽和信号:classSignalsSlots:publicQObject{Q_OBJECTpublic:explicitSignals

c++ - 如何在 C++ 中实现 "virtual template function"

首先:我已经阅读并且我现在知道在C++中虚拟模板成员函数(还没有?)是不可能的。一种解决方法是将类设为模板,然后在成员函数中也使用模板参数。但是在OOP的上下文中,如果类实际上是一个模板,我发现下面的示例将不是很“自然”。请注意,代码实际上不起作用,但gcc-4.3.4报告:error:templatesmaynotbe'virtual'#include#includeclassAnimal{public:templatevirtualvoideat(AMOUNTamount)const{std::coutvoideat(AMOUNTamount)const{std::coutvoid

c++ - 如何在 C++ 中实现 "virtual template function"

首先:我已经阅读并且我现在知道在C++中虚拟模板成员函数(还没有?)是不可能的。一种解决方法是将类设为模板,然后在成员函数中也使用模板参数。但是在OOP的上下文中,如果类实际上是一个模板,我发现下面的示例将不是很“自然”。请注意,代码实际上不起作用,但gcc-4.3.4报告:error:templatesmaynotbe'virtual'#include#includeclassAnimal{public:templatevirtualvoideat(AMOUNTamount)const{std::coutvoideat(AMOUNTamount)const{std::coutvoid

c++ - 别名模板的包扩展

似乎可以仅扩展包参数来代替别名模板的包参数。这不适用于类或函数模板:templatestructx{usingtype=T;};templateusingx_t=typenamex::type;templateusingx_fix_t=typenamex::type;templateautof(Args...)->void{typenamex::typev1;//OKx_tv2;//Errorx_fix_tv3;//OK}更简单的情况:templateusingy_t=T;templateautof(Args...)->void{y_tv4;//Error}上面的代码生成错误(即使f从

c++ - 别名模板的包扩展

似乎可以仅扩展包参数来代替别名模板的包参数。这不适用于类或函数模板:templatestructx{usingtype=T;};templateusingx_t=typenamex::type;templateusingx_fix_t=typenamex::type;templateautof(Args...)->void{typenamex::typev1;//OKx_tv2;//Errorx_fix_tv3;//OK}更简单的情况:templateusingy_t=T;templateautof(Args...)->void{y_tv4;//Error}上面的代码生成错误(即使f从

c++ - C2977 : 'std::tuple' : too many template arguments (MSVC11)

我正在尝试使用VisualC++11构建googletest,但以下代码会导致错误templatevoidPrintTo(const::std::tr1::tuple&t,//这是一个错误文本:f:\gtest-1.6.0\include\gtest\gtest-printers.h(550):errorC2977:'std::tuple':toomanytemplateargumentsc:\programfiles(x86)\microsoftvisualstudio11.0\vc\include\utility(72):seedeclarationof'std::tuple'还有

c++ - C2977 : 'std::tuple' : too many template arguments (MSVC11)

我正在尝试使用VisualC++11构建googletest,但以下代码会导致错误templatevoidPrintTo(const::std::tr1::tuple&t,//这是一个错误文本:f:\gtest-1.6.0\include\gtest\gtest-printers.h(550):errorC2977:'std::tuple':toomanytemplateargumentsc:\programfiles(x86)\microsoftvisualstudio11.0\vc\include\utility(72):seedeclarationof'std::tuple'还有