У меня есть код C ++, который отображает GUID (unsigned long) в структуру.
#include <string>
#include <map>
#include <iostream>
typedef unsigned long GUID;
enum Function {
ADDER = 1,
SUBTRACTOR = 2,
MULTIPLIER = 3,
SQUAREROOT = 4
};
struct PluginInfo
{
GUID guid;
std::string name;
Function function;
PluginInfo(GUID _guid, std::string _name, Function _function) {guid = _guid, name = _name, function = _function;}
};
typedef std::map<GUID, PluginInfo> PluginDB;
PluginInfo temp1(1, "Adder", ADDER);
PluginInfo temp2(2, "Multiplier", MULTIPLIER);
PluginDB::value_type pluginDbArray[] = {
PluginDB::value_type(1, temp1),
PluginDB::value_type(2, temp2)
};
const int numElems = sizeof pluginDbArray / sizeof pluginDbArray[0];
PluginDB pluginDB(pluginDbArray, pluginDbArray + numElems);
int main()
{
std::cout << pluginDB[1].name << std::endl;
}
Когда я его скомпилировал, я получил сообщение об ошибке.
/ USR / включать / C ++ / 4.2.1 / бит / stl_map.h:
В функции-член ‘_Tp &
std :: map <_Key, _Tp, _Compare,
_Alloc> :: operator [] (const _Key &) [с _Key = длинным беззнаковым int, _Tp = PluginInfo, _Compare = std :: less, _Alloc =
std :: allocator>] ’:
mockup_api.cpp: 58: создается из
Вот
/usr/include/c++/4.2.1/bits/stl_map.h:350:
ошибка: нет подходящей функции для вызова
в PluginInfo :: PluginInfo ()
mockup_api.cpp: 29: примечание: кандидаты
являются: PluginInfo :: PluginInfo (GUID,
std :: string, Function)
mockup_api.cpp: 24: примечание:
PluginInfo :: PluginInfo (Const
PluginInfo &)
Что может быть не так?