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

时间:2011-11-26 11:55:51

标签: c++ arrays pointers abstract-class

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

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

}

2 个答案:

答案 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;(没有通常的大括号及其内容)这样的行吗?

如果没有看到更多的代码(并且不知道编译器抱怨哪一行),很难说更明确的事情。