【发布时间】:2019-04-23 21:27:49
【问题描述】:
在 C++ 中我可以做到
class A
{
public:
A(std::vector<std::unique_ptr<int>> v) : _v(std::move(v)) {}
private:
std::vector<std::unique_ptr<int>> _v;
}
如何实现与ue4类型(TArray、TUniquePtr)类似的东西,即如何移动TArray的内容?
完整示例:
#include <cassert>
#include <memory>
#include <vector>
class MyObj {};
class A {
public:
A(std::vector<std::unique_ptr<MyObj>> v) : _v(std::move(v)) {}
auto GetV() { return _v.front().get(); }
private:
std::vector<std::unique_ptr<MyObj>> _v;
};
int main() {
auto v = std::vector<std::unique_ptr<MyObj>>();
v.push_back(std::make_unique<MyObj>());
A a(std::move(v));
assert(a.GetV());
}
【问题讨论】:
-
做吧!你遇到什么问题了吗?你应该解释那个问题是什么。
-
@LightnessRacesinOrbit 问题是,ue4 建议使用它的类而不是 std(尽管 std 可以在大多数使用 ue4 的平台上编译和运行),而且它是否以及哪些类作为替代品对我来说并不明显对于问题中所述的标准。
-
你试过看看发生了什么吗?你有什么错误吗?有没有出乎你意料的事情发生?
-
@LightnessRacesinOrbit 不,它与
std配合得很好。但是坚持Coding standard of a code base 同样重要,因为单个开发人员无法监督对整个程序的影响(在我的机器上工作不是一个好的推理) - 如果您想进行更多讨论,请在聊天中打我。 -
我要求您通过实际告诉我们使用 Unreal 类型和移动语义的问题来提出您的问题。如果你不能这样做,那就是题外话,可能会被关闭!
标签: c++ unreal-engine4