我知道问题似乎暧昧,但我想不出任何其他的方式把它,但是,是否有可能做这样的事情:

#include<iostream>

class wsx;

class wsx
{
public:
wsx();
}

wsx::wsx()
{
std::cout<<"WSX";
}

有帮助吗?

解决方案

是,这是可能的。以下只是声明wsx

class wsx;

那种声明的被称为前向声明,因为当两个类是指彼此需要它的:

class A;
class B { A * a; };

class A { B * b; };

需要其中之一被向前声明然后

其他提示

这是类定义

class wsx
{
public:
wsx();
}

这是构造的定义

wsx::wsx()
{
std::cout<<"WSX";
}

这是一个前向声明,指出该类将被定义某处

class wsx;

在您的例子中,

class wsx; // this is a class declaration

class wsx  // this is a class definition
{
public:
wsx();
}

所以,是通过使用class wsx;能够声明一个类而不定义它。类声明可以声明指针及该类引用,而不是类的实例。编译器需要的类定义,以便它知道多少内存来分配为类的实例。

是。但它是的可以定义一个类没有声明它。

由于:每个定义也是声明

您没有定义的类。它没有任何数据成员,但是这不是必要的。

我不知道你的意思。您粘贴的代码看起来是正确的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top