覆盖功能问题

时间:2019-06-09 22:57:19

标签: c++ class void unreal-engine4

我正在制作FPS游戏,现在正在添加机器人。我遇到了一个显示被覆盖问题的函数。问题在于虚无-拥有。

我还没有尝试过。

private void initRecyclerView(){
         mImageUrls.add("https://c1.staticflickr.com/5/4636/25316407448_de5fbf183d_o.jpg");
        mNames.add("Havasu Falls");
        mtags.add("#Sun");

        mImageUrls.add("https://i.redd.it/0h2gm1ix6p501.jpg");
        mNames.add("Mahahual");
        mtags.add("#Sun");


        mImageUrls.add("https://i.redd.it/k98uzl68eh501.jpg");
        mNames.add("Frozen Lake");
        mtags.add("#Winter");

        RecyclerView recyclerView = findViewById(R.id.recycler_public);
        MyRecyclerViewAdapter MyRecyclerViewAdapter = new MyRecyclerViewAdapter(this, mNames, mImageUrls, mtags);
        StaggeredGridLayoutManager RecyclerGridLayoutManager = new StaggeredGridLayoutManager(1, LinearLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(RecyclerGridLayoutManager);
        recyclerView.setAdapter(MyRecyclerViewAdapter);
    }

我希望void Possss可以正常工作而不会给出任何错误,因为我在代码中看不到任何错误,并且我认为它应该可以工作。它显示此错误- 'AController :: Possess':声明为'final'的函数不能被'AAI_Controller :: Possess'覆盖

如果有人可以解释发生了什么以及如何解决这个问题,我将非常感激。

2 个答案:

答案 0 :(得分:1)

问题在于AController::Possess()的声明已经声明为final,因此编译器阻止您覆盖AAI_Controller中的函数。

您可以转到声明类AController的位置,然后删除final关键字,例如: virtual void Possess(APawn* pawn) finalvirtual void Possess(APawn* pawn),这将消除错误。不过,您应该小心谨慎,如果您未编写基类,则可能有充分的理由首先将函数声明为final

或者,如果您不能这样做并且可以更改函数签名,那么只需创建自己的函数就不能覆盖基本成员函数。

答案 1 :(得分:0)

该函数是最终函数的原因是因为它是虚幻引擎v4.22中不推荐使用的函数。我不建议修改它,甚至根本不使用它。而是使用OnPossess和OnUnpossess,一切都应该正常工作。

virtual void OnPossess(APawn* InPawn) override;
virtual void OnUnPossess() override;