我目前正在尝试使用更新的工具在C++中创建一个旧项目:该项目已在Windows XP
和VC71
上开发,现在我正试图使其在Windows 7
上运行,并且使用VC100
。默认模板参数?
我没有得到任何“大”的问题,但是我有最后一个编译问题,这导致我的代码 - 对我来说很晦涩 - 。
这里是宏(简体),我有麻烦的一个样本:
#define IMPORT_STD_PAIR(_keyClass_ ,_objectClass_) \
extern template struct std::pair< _keyClass_,_objectClass_ >; \
...
的错误是:
C2955: 'std::allocator' : use of class template requires template argument list.
我真的不明白什么是应该做的(第二行),为模板类指定默认参数?
谢谢你的帮助。
编辑: @Mark B:谢谢你的回答。你让我意识到发生了什么事:没有。
事实上,这是我的错,因为我在开发Windows时并不熟悉。该代码原本是:
#define IMPORT_STD_MAP(_import_directive_, _keyClass_ ,_objectClass_) \
extern template struct _import_directive_ std::pair<_keyClass_,_objectClass_>;
我忽略_import_directive_因为它几乎是“空”在每一种情况下,除了一个。所以当它是空的时候,它只是创建一个没有真正相关名称的实例;但是当这个宏取值__declspec (dllimport)
它更有意义:)
感谢帮助我意识到,我认为这是更奇特的东西,并感谢您的调试建议,这是有用的。
我认为它可能帮助,如果你搜索一个这个#define被实际使用的地方,并将它添加到你的示例代码 – yms