void test()
{
Token test();
Actor* check;
check = dynamic_cast<Actor*>(test);
}
此方法给出了以下错误,并用红色突出显示大括号中的测试。指针dynamic_cast的操作数必须是指向完整类类型
的指针我该如何解决这个问题?顺便说一句,Actor从Token继承。这是Tokens头文件中的代码。
#pragma once
#include <string>
class Token
{
public:
Token();
Token(int x, int y);
bool IsDead();
~Token();
char Symbol();
int X, Y;
bool clear;
bool indestructable;
int health;
int damage, rangeDamage;
//bool npc;
char character;
std::string ToString();
std::string name;
bool turnCompleted;
void SetProfile(char Name);
};
答案 0 :(得分:3)
首先,您不是要创建名为Token
的类test
的实例,而是声明一个返回test()
的函数Token
。
其次,您可以尝试将指针转换为Token
,而不是对象实例,因此您应该使用地址:
void test()
{
Token test;
Actor* check = dynamic_cast<Actor*>(&test);
}
第三,您说Actor
继承自Token
,但Token
没有任何虚拟功能,因此您无法在其上使用dynamic_cast
。在你的案例中,一个好的候选人是Token
的析构函数。