指针数组作为函数中的参数

arj*_*soh 2 c++ arrays abstract-class pointers

我在类中创建此函数并收到错误:不允许指向不完整类类型的指针.

就我而言,可以声明一个指向抽象类对象的指针数组.之后,您可以在数组中传递派生类的对象.这段代码的问题在哪里(类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;
 }
}
Run Code Online (Sandbox Code Playgroud)

}

Ker*_* SB 6

你必须确保在类定义Square是可见的,当你使用这个类(通过取消引用指针).通常是这样的:

// player.hpp

class Square;

class Player
{
  void captureSquare(Square* []);
};
Run Code Online (Sandbox Code Playgroud)

// player.cpp

#include "player.hpp"
#include "square.hpp"

void Player::captureSquare(Square* allSquares[22])
{
  allSquares[0]->foo();  // need complete class here!
}
Run Code Online (Sandbox Code Playgroud)