小编Cra*_*ops的帖子

无法将空的初始值设定项分配给 unique_ptrs 的向量

我有以下代码:

std::unordered_map<std::string, std::vector<std::unique_ptr<class EventTrigger>>> triggers;

if (triggers.end() == triggers.find(eventName)) {
   triggers[eventName] = {};
}
Run Code Online (Sandbox Code Playgroud)

这会导致有关使用已删除的 unique_ptr 构造函数的错误。另一方面,如果我这样做,一切都可以正常编译:

if (triggers.end() == triggers.find(eventName)) {
   triggers[eventName] = std::vector<std::unique_ptr<class EventTrigger>>();
}
Run Code Online (Sandbox Code Playgroud)

谁能解释为什么会这样?我认为空的初始化列表会导致一个空的向量被分配给triggers[eventName].

c++ unordered-map vector unique-ptr c++11

14
推荐指数
1
解决办法
461
查看次数

std::variant 和 std::visit: 错误:没有名为“valueless_by_exception”的成员

我有以下代码块:

std::visit([&](auto &&arg)
{
    using T = std::decay_t<decltype(arg)>;

    if constexpr (
        std::is_same_v<T, size_t> ||
        std::is_same_v<T, int> ||
        std::is_same_v<T, double> ||
        std::is_same_v<T, bool>
    ) {
        document->AddMember(value.first.c_str(), arg, allocator);
    }
    else if constexpr (std::is_same_v<T, std::string>){
        document->AddMember(
            rapidjson::StringRef(value.first.c_str()),
            rapidjson::StringRef(arg.c_str()),
            allocator
        );
    }
    else if constexpr (std::is_same_v<T, std::shared_ptr<Serializable>>) {
        // TODO
    }
    else if constexpr (std::is_same_v<T, std::vector<std::string>>) {
        for (const auto &strVal: arg) {
            // TODO
        }
    }
    else if constexpr (std::is_same_v<T, std::vector<std::shared_ptr<Serializable>>>) {
        for (const auto &strVal: arg) {
            // TODO
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c++ variant c++17

3
推荐指数
1
解决办法
739
查看次数

Openlayers 3.6:获取当前地图视图的中心

我正在尝试获取经纬度坐标的Openlayers地图的当前中心。我有以下事件处理程序设置:

this.map.on('pointermove', function (e) {
    if (e.dragging) {
        console.log(that.map.getView().getCenter());
    }
});
Run Code Online (Sandbox Code Playgroud)

这行得通,但我得到了奇怪的价值观。这是一个例子:

[9318218.659044644, 3274618.6225819485]
Run Code Online (Sandbox Code Playgroud)

这些显然不是纬度/经度值:)我需要以某种方式进行转换吗?谢谢!

openlayers-3

2
推荐指数
1
解决办法
2934
查看次数

标签 统计

c++ ×2

c++11 ×1

c++17 ×1

openlayers-3 ×1

unique-ptr ×1

unordered-map ×1

variant ×1

vector ×1