我在类中创建此函数并收到错误:不允许指向不完整类类型的指针。
就我而言,可以声明一个指向抽象类对象的指针数组。之后,您可以在数组中传递派生类的对象。 这段代码的问题在哪里(类Square是抽象的):
public:
Player(int,int);
void captureSquare(Square* []);
void Player::captureSquare(Square* allSquares[22])
{
for(int i=0;i<22;i++){
Square* OnSquare = allSquares[i];
if(OnSquare->getID==squarePosition){
capturedSquare = OnSquare;
break;
}
}
}
答案 0 :(得分:6)
当您使用类时(通过取消引用指针),您必须确保Square
的类定义可见。通常是这样的:
// player.hpp
class Square;
class Player
{
void captureSquare(Square* []);
};
// player.cpp
#include "player.hpp"
#include "square.hpp"
void Player::captureSquare(Square* allSquares[22])
{
allSquares[0]->foo(); // need complete class here!
}
答案 1 :(得分:1)
抱怨类型不完整的错误通常意味着该类的定义在此时不可用。你可能在同一个文件或包含文件中的某个地方有class Square;
(没有通常的大括号及其内容)这样的行吗?
如果没有看到更多的代码(并且不知道编译器抱怨哪一行),很难说更明确的事情。