Ich schreibe eine abstrakte Klasse foo
und bar
Klasse erbt von foo.Was ist der Unterschied zwischen map <string, pair <string, foo * >> und map <string, pair <string, foo & >>?
Ich möchte einen Kartencontainer erstellen, der map<string, pair<string, foo&>>
ist, aber ich kann nicht erfolgreich kompilieren. Der Compiler sagt mir
“std::pair<std::string,foo &>::pair”: not appropriate default constructor
Hier Code:
#include <iostream>
#include <string>
#include <windows.h>
#include <map>
#include <utility>
using namespace std;
class foo
{
public:
virtual void t() = 0;
};
class bar :public foo
{
public:
void t()
{
cout << "bar" << endl;
}
};
int main()
{
bar b;
//wrong
//map<string, pair<string, foo&>> t;
//pair<string, foo&> p("b", b);
//t["t"] = p;
//right
map<string, pair<string, foo*>> t;
pair<string, foo*> p("b", &b);
t["t"] = p;
p.second->t();
}
ich den Unterschied zwischen map<string, pair<string, foo*>>
und map<string, pair<string, foo&>>
wissen wollen.
Wissen Sie, was der Unterschied zwischen einem Zeiger und einer Referenz ist? – NathanOliver
https://stackoverflow.com/questions/57483/what-are-the-differences-between-a-pointer-variable-and-a-reference-variable-in –
@ FrançoisAndrieux könnten Sie den Grund ausführlich erklären? – lens