请看这个简单的课程:
class TernaryPolynomial;
class IntegerPolynomial;
class DenseTernaryPolynomial:public IntegerPolynomial,public TernaryPolynomial
{
public:
DenseTernaryPolynomial();
static DenseTernaryPolynomial generateRandom(int,int,int);
};
Run Code Online (Sandbox Code Playgroud)
你能解释一下,为什么编译器会抱怨TernaryPolynomial必须是以前定义的类或结构?我认为它根本不应该关心,因为我提出了该类的前瞻声明.这是TernaryPolynomial类
class Polynomial;
class IntegerPolynomial;
class TernaryPolynomial:public Polynomial
{
public:
TernaryPolynomial();
virtual ~TernaryPolynomial();
virtual IntegerPolynomial toIntegerPolynomial() = 0;
};
Run Code Online (Sandbox Code Playgroud)
对于派生,前向声明是不够的,您需要包含完整的类定义.
只有在将指针或对类的引用定义为成员或方法参数时,才能使用前向声明.一旦你真正开始使用东西(通过解除引用,通过引用访问成员或派生例子),你需要包括整个类定义.
| 归档时间: |
|
| 查看次数: |
636 次 |
| 最近记录: |