无法在虚幻引擎中使用std::vector

4
我在使用STL功能时遇到了问题,我的UE4项目中的Intellisense显示了红线错误,并且无法理解我正在尝试编写的内容。
我使用VS 2017,并已下载了Unreal开发设置。
我已经使用相同的IDE在空白项目中测试了STL功能,那里没有Intellisense问题,一切正常。
我认为我可能缺少与虚幻引擎有关的某种特殊设置,但我不知道是什么,也找不到任何相关文档。
谢谢。
#include <vector>

#include "CoreMinimal.h"
#include "Interactable.h"
#include "Hand.generated.h"

class Card;

UCLASS()
class SKYLINE_API AHand : public AInteractable
{
    GENERATED_BODY()

public:

    void PlayCard();
    void DiscardCard();

private:

    std::vector<Card*> m_vpCards;

};

2
哪里出错了,它说了什么? - Quentin
我找到了问题所在。原来UE更喜欢你使用他们自己的容器,比如TArray,它的工作方式与std::vector相同。 - jckTol
2个回答

3
Unreal Engine使用自己的数据结构而不是标准模板库,这是为了兼容性和可移植性。详细原因请参考Kaiserludi的帖子:https://forums.unrealengine.com/development-discussion/c-gameplay-programming/46700-why-doesn-t-ue-utilize-stl-containers 对于向量,应该使用TArray:https://api.unrealengine.com/INT/API/Runtime/Core/Containers/TArray/index.html 此外,在声明非Unreal源类型的字段时,应始终声明UPROPERTY(),否则引擎将在您甚至不知道的情况下垃圾回收其内存。
如果您真的想使用std::vector,名为feixuwu的人在他/她的websocket上使用了它。您可以在此处查看代码:https://github.com/feixuwu/UEWebsocket

0

删除保存的、二进制和中间文件,然后右键单击您的虚幻项目文件并选择生成 VS 项目文件,然后打开您的项目。希望这能帮到您,因为它对我有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接