假设我们有以下代码:

struct some_class : parent
{

    some_class(::other_class oth) :
       parent(some_function(oth.some_property), std::move(oth))
    {}

};

当然,构造会导致未定义的行为(在我的情况下是崩溃),因为 C++ 没有指定执行顺序。但是,我怎样才能在运动之前检索属性(property)?我不能改变 parent 。

最佳答案

您可以尝试委托(delegate)构造函数:

struct some_class : parent
{

    some_class(::other_class oth) :
       some_class(some_function(oth.some_property), std::move(oth))
    {}

private:
    some_class(const ::Foo& foo, ::other_class&& oth) :
       parent(foo, std::move(oth))
    {}
};

关于c++ - 如何同时使用变量和 move 变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60696954/

10-13 00:04