代码之家  ›  专栏  ›  技术社区  ›  Diego Aguirre García

错误C2146:语法错误:按函数传递映射时,标识符mType之前缺少“,”

  •  3
  • Diego Aguirre García  · 技术社区  · 6 年前

    当我声明以下函数时:

    #include <vector>
    #include <map>
    void setTypeByBanknote(tsBanknotes &tsBanknotes, std::map<char, std::vector<byte>> &mType);
    

    我的编译器显示以下错误:

    错误C2146:语法错误:标识符mType之前缺少“,”

    但如果我做以下事情:

    #include <vector>
    #include <map>
    typedef std::vector<byte> tvByteVector;
    void setTypeByBanknote(tsBanknotes &tsBanknotes, std::map<char, tvByteVector &mType);
    

    我的编译器未显示任何错误,编译正确

    是否有任何方法可以在不使用typedef的情况下将此映射作为参数传递?

    我正在使用 visual 6.0 as IDE ,我知道它很旧。问题是因为旧的IDE吗?我确实包括矢量和地图库。

    提前感谢!

    1 回复  |  直到 6 年前
        1
  •  4
  •   taskinoor    6 年前
    std::map<char, std::vector<byte> >
                                   ^^^^
    

    你需要在两者之间留出一个空间 > s喜欢 > > 。否则,非常古老的VS 6.0会与运算符混淆 >> 。最好更新编译器。