gpt4 book ai didi

c++ - 如何调用返回 double 或字符串并将其保存在 map 上但作为对象的类的方法

转载 作者:行者123 更新时间:2023-11-30 05:12:18 25 4
gpt4 key购买 nike

编译时出现错误:无法在赋值中将‘std::string {aka std::basic_string}’转换为‘std::map, Object*>::mapped_type {aka Object*}’

myMap["objectA"] = aa->str();

这是我的程序:

class Object{
public:
virtual void test() =0;
virtual string str() {}
};

class A : public Object{
public:
void test(){
int a = 23.58;
cout << a;
}
string str(){
return "a";
}
};

class B : public Object{
public:
void test(){
cout << "B::play()\n";
}
};

class C : public Object{
public:
void test(){
cout << "C::play()\n";
}
};


int main() {
map<string, Object*> myMap;

A* aa = new A;

myMap["objectA"] = aa->str();
myMap["objectB"] = new B;
myMap["objectC"] = new C;

map<string, Object*>::iterator it;
for(it = myMap.begin(); it != myMap.end(); it++){
(*it).second->test();
delete (*it).second;
}

如何解决该 map 上保存不同类型数据的问题?

最佳答案

您不能添加 std::string作为 std::map<std::string, Object*> 的值.您可以添加指针 aa .

myMap["objectA"] = aa;

关于c++ - 如何调用返回 double 或字符串并将其保存在 map 上但作为对象的类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44611488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com