c++ - “std::map”: 'SomeClass' 不是参数 '_Ty' 的有效模板类型参数

标签 c++

我目前有一个如下所示的类。

#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/

相关文章:

c++ - 如何使用Qt/QwtPlot设置固定轴间隔?

c++ - 一个C++函数可以有多少行代码

c++ - 为什么 std::iterator 不包含 std::prev() 作为成员函数?

C++: 'cout << pointer <<++pointer' 生成编译器警告

c++ - 我可以将 map 迭代器与 OpenMP 并行使用吗?

c++ - '虚拟 xyz' 与 'xyz virtual' 方法

c++ - 重载运算符不抛出异常

c++ - Coroutines2 - 为什么 yield 在没有调用源时运行

c++ - Visual Studio 2013 中的 select_on_container_copy_construction 内部错误

c++ - 函数指针声明