我目前有一个如下所示的类。
#define SET_METHOD( t , n ) \
private: t n; \
public: void set_##n( t value ) { n = value; }
class SomeClass
{
private:
SET_METHOD(std::map<int,SomeClass>,hf);
};
但是当我做这样的事情时:
SomeClass sc;
hc.AddItem(1,sc);
我收到以下错误。我还有这些宏用于设置 getter 和 setter,但这次我不知道问题是什么。我收到以下错误
Error 3 error C2923: 'std::map' : 'SomeClass' is not a valid template type argument for parameter '_Ty'
Error 4 error C2208: 'std::map<_Kty,_Ty>' : no members defined using this type
任何有关如何解决此问题的建议将不胜感激
最佳答案
我相信,
在定义中std::map<int,SomeClass>
混淆了 C++ 预处理器。
删除宏并手动定义您的 setter/getter。
或者创建 typedef
:
typedef std::map<int,SomeClass> MyMap;
并使用:
IMPLEMENT_SET_GET_METHOD(MyMap,hf);
关于c++ - “std::map”: 'SomeClass' 不是参数 '_Ty' 的有效模板类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17064110/