我正在制作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'覆盖
如果有人可以解释发生了什么以及如何解决这个问题,我将非常感激。
答案 0 :(得分:1)
问题在于AController::Possess()
的声明已经声明为final,因此编译器阻止您覆盖AAI_Controller
中的函数。
您可以转到声明类AController
的位置,然后删除final
关键字,例如:
virtual void Possess(APawn* pawn) final
至virtual void Possess(APawn* pawn)
,这将消除错误。不过,您应该小心谨慎,如果您未编写基类,则可能有充分的理由首先将函数声明为final
或者,如果您不能这样做并且可以更改函数签名,那么只需创建自己的函数就不能覆盖基本成员函数。
答案 1 :(得分:0)
该函数是最终函数的原因是因为它是虚幻引擎v4.22中不推荐使用的函数。我不建议修改它,甚至根本不使用它。而是使用OnPossess和OnUnpossess,一切都应该正常工作。
virtual void OnPossess(APawn* InPawn) override;
virtual void OnUnPossess() override;