std::map的value可以是类的指针,但在声明std::map时,需要指定正确的模板参数。模板参数2表示map的value类型,应该是指向类的指针。

示例代码如下:

#include <iostream>
#include <map>

class MyClass {
public:
    MyClass(int value) : m_value(value) {}

    int getValue() const {
        return m_value;
    }

private:
    int m_value;
};

int main() {
    std::map<int, MyClass*> myMap;

    MyClass* obj1 = new MyClass(1);
    MyClass* obj2 = new MyClass(2);

    myMap[1] = obj1;
    myMap[2] = obj2;

    std::cout << myMap[1]->getValue() << std::endl;  // 输出:1
    std::cout << myMap[2]->getValue() << std::endl;  // 输出:2

    delete obj1;
    delete obj2;

    return 0;
}

在上面的示例中,我们声明了一个std::map对象myMap,其中key的类型是int,value的类型是MyClass*(指向MyClass类的指针)。我们创建了两个MyClass对象,并将它们的指针存储在myMap中。然后,我们可以通过myMap的key来访问存储的对象,并调用其成员函数。最后,注意在程序结束前,我们需要手动释放动态分配的内存。

stdmap的value可以是类的指针提示template argument 2 is invalid

原文地址: https://www.cveoy.top/t/topic/jcaa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录