문제

나는 질문이 모호한 것처럼 보이지만 다른 방법으로는 생각할 수 없었지만 다음과 같은 일을 할 수 있습니다.

#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