Это немного моего кода:Ошибка: не жизнеспособны перегруженный оператор []
#include "pugi/pugixml.hpp"
#include <iostream>
#include <string>
#include <map>
int main() {
pugi::xml_document doca, docb;
std::map<std::string, pugi::xml_node> mapa, mapb;
if (!doca.load_file("a.xml") || !docb.load_file("b.xml"))
return 1;
for (auto& node: doca.child("site_entries").children("entry")) {
const char* id = node.child_value("id");
mapa[new std::string(id, strlen(id))] = node;
}
for (auto& node: docb.child("site_entries").children("entry"))
const char* idcs = node.child_value("id");
std::string id = new std::string(idcs, strlen(idcs));
if (!mapa.erase(id)) {
mapb[id] = node;
}
}
При компиляции я получаю эту ошибку:
src/main.cpp:16:13: error: no viable overloaded operator[] for type 'std::map<std::string, pugi::xml_node>'
mapa[new std::string(id, strlen(id))] = node;
'new std :: string ...' -> 'std :: string' –
Вы мужчина java? Потому что я чувствую Java здесь: 'std :: string id = new std :: string (idcs, strlen (idcs));'. Вы не являетесь «новыми» локальными переменными в C++. – Lol4t0
В настоящее время вы не 'new' * anything * в C++. – chris