代码之家  ›  专栏  ›  技术社区  ›  DHamrick

使用g的标准模板库++

  •  0
  • DHamrick  · 技术社区  · 17 年前

    在Linux中从Windows迁移程序时,我使用C++标准模板库遇到了一个问题。我正在尝试对模板进行typedef,但在这一行的“<”标记之前得到了错误“expected initializer”

    typedef std::list<std::pair<int,double>>对列表;

    你知道为什么使用MVC++而不使用G++会有效吗?我该如何修复它?

    4 回复  |  直到 17 年前
        1
  •  2
  •   Arnaud Gouder de Beauregard    17 年前

    我认为这包括在内。

    下面这段代码在Linux上用g++非常好地编译。

    #include <utility>
    #include <list>
    
    typedef std::list< std::pair< int,double> > PairList;
    
    PairList x;
    
        2
  •  1
  •   David Thornley    17 年前

    关于标准include文件,需要记住的一点是,允许它们,但不要求它们互相调用。(这并不是因为它们都使用了名称空间std,所以它们可能会因此而污染名称空间,而这是您不应该处理的。)

    在msvc++中,可能包含,或者反之亦然,但在g++头文件中则不是这样。因此,程序可能在MSVC++中编译,而不是在G++中编译,源代码中缺少必需的头。

    确保您所需的所有头文件都包含在内,并且您应该很好。

        3
  •  0
  •   rlbond    17 年前

    是你 #include <utility> 对于 pair ?

        4
  •  0
  •   Dietrich Epp    17 年前

    我对G++中的代码没有任何问题,并且通常认为它的STL支持非常出色。你们都有吗 #include 有指示吗?有时候,不同平台之间的差异(即使不应该如此)。