Only平 2017-04-16 15:09 采纳率: 0%
浏览 1486

g++编译这个模板类报错,msvc上没问题,这是为什么?

最近把一个在VS2015上正常工作的代码拿到ubuntu上用g++编译,结果编译阶段报错,开了-std=c++11也无法通过,不知道是什么原因。。
代码如下:

 #include <stdio.h>

template<class A> class T {
public:
    template<class B>
    void func1() { printf("func1\n"); }
    void func2() { printf("func2\n"); }
};

template<class A, class B>
struct F {
    void func1() { T<int> t; t.func1<B>(); }
    void func2() { T<A> t; t.func2(); }
    void func3() { T<A> t; t.func1<B>(); }
};

int main(int argc, char *argv[]) {
    F<int, int> f;
    f.func3();
    return 0;
}

报错位置在void F::func3()中,报错内容为:
图片说明

大家帮忙看一看这个是什么原因,如果是g++支持的不够好,那如何改代码实现同样的效果呢?
在此先谢过了!

  • 写回答

2条回答 默认 最新

  • devmiao 2017-04-16 15:53
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启