Я помещаю объекты в карту (код ниже), когда я пытаюсь получить его, объект пуст!
Server s;
s.port = 5400;
commandsMap.insert(std::pair<string,Command>("openDataServer",s));
Сервер присущ команде
class Server: public Command{
public:
static map<string,Varinfo> symbolList;
static map<string,Command> commandsMap;
bool stop = false;
int port;
int execute(vector<string> inputs);
static int lstn(int socketfd,sockaddr_in address);
};
и Вот команда
class Command{
public:
Command();
int execute(vector<string> inputs);
};
, и здесь я пытаюсь найти значения, которые я там выдвинул, но объект из класса Command и его пустой!
auto it = commandsMap.find(commands[index]);
if ( it != commandsMap.end() ) {
index += it->second.execute(commands);
}
note: command [index] возвращает строку, и когда я отлаживаю после нажатия объекта, я вижу его прямо внутри карты, но когда я использую find iterator it-> second возвращает пустой объект Command
есть идеи? спасибо
Обновление: я думаю, проблема в том, что объект, который карта находит, не является объектом сервера, я хочу добавить в карту sh много типов классов, которые наследуют Command, и каждый из которых запускается свой собственный execute () и иметь собственные поля. Команда, которую возвращает карта, возвращается как класс команд, она должна возвращаться как сервер
final Вопрос: я хочу использовать общий указатель в качестве решения У меня есть классы, такие как Server, которые наследуются от Command, я хочу поместить их в карту, а затем запустить свою собственную execute (), как показано выше