【发布时间】:2014-06-28 14:02:57
【问题描述】:
编辑了更多重现错误的代码,将地图更改为 unordered_map。
我已经离开并编写纯目标 C 代码一年多了,如果这是一个新手错误,请原谅我!
我在针对 iOS 7 模拟器的 XCode 5 中编译为 .mm (Objective-C++)。它使用 clang-503.0.40。基于 LLVM 3.4。
代码如下:
typedef uint32_t uint32;
class Actor {
public:
std::string name;
std::set<uint32> behaviors;
Actor() { }
private:
};
class Location {
public:
// .. some stuff ...
std::unordered_map<uint32,std::shared_ptr<Actor>> actors; // A list of actors in the location
Location() { }
private:
};
然后在我做的一个函数中-
std::shared_ptr<Location> l1(new Location);
std::shared_ptr<Actor> npc(new Actor);
l1->actors.emplace(npc); // ERROR HAPPENS HERE
我将其更改为无序地图,因为我无法提供“更少”且不需要排序。
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c++/v1/unordered_map:544:11:没有匹配的构造函数用于初始化'value_type'(又名'pair')
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c++/v1/memory:1641:31:在函数模板特化'std::__1::__hash_value_type>的实例化中: :__hash_value_type &>' 在这里请求
有一长串候选构造函数被排除在外,如果您需要查看它们,还有其他类似的东西。
那么我犯了什么新手错误?
【问题讨论】:
-
您能否提供有关代码和错误的更多详细信息?
-
@sfjac 还有哪些详细信息?我认为不需要更多。但我不是objective-c++ 专家。
-
不知道 - 足以重现。 C++ 没有任何问题,即使我把它放在一个 .mm 文件中(我是 C++ 人,不是 ObjC),一切都会编译。
-
添加了详细信息,我一直没有使用 XCode 调试 C++,忘记了如何找到它发生的确切行。代码现在重现错误
-
如果你早点给出失败的行,你会得到一个更快的答案。
标签: c++ xcode5 clang objective-c++ stdmap