C++ Я следующее заявление в Key.h
почему пара не правильно создаются -
typedef uint64_t KeyHash;
и в моем Finder
классе, у меня есть C++
карту объявленных следующим образом:
std::map<std::pair<uint64_t, KeyHash>, Foo> table;
Таким образом, , Я пытаюсь создать новую пару. Объект Foo
имеет два поля, startKeyHash
и foo_id
, оба типа uint64_t
:
std::pair<uint64_t, KeyHash> key (foo.foo_id,
foo.start_key_hash());
table[key] = tablet;
функцию uint64_t Foo:start_key_hash()
возвращающую startKeyHash
. Однако, когда я компилирую мой код, я получаю следующее сообщение об ошибке:
error: no matching function for call to ‘std::pair<long unsigned int, long unsigned int>::pair(<unresolved overloaded function type>, google::protobuf::uint64)’
/usr/lib/gcc/x86_64-redhat-`linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_pair.h:111: note:
candidates are: std::pair<_T1, _T2>::pair(_U1&&, _Arg0&&, _Args&& ...) [with _U1 =
google::protobuf::uint64, _Args = , _T1 = long unsigned int, _T2 = long unsigned int]`
Любые мысли?
Это правда ... я должен отбрасывать из 'uint64' в' uint64_t'? – cybertextron
Я бы исправил опечатку! –