namespace chk{
class Car;
Car abc()
{
return Car();
}
class Car
{
private:
int sides;
public:
Car()
{
std::cout<<"\ndefault called constructor";
}
Car(int nsides)
{
std::cout<<"\ncalled constructor";
sides=nsides;
}
~Car()
{
std::cout<<"\nDeleting objext";
}
};
/* Car abc()
{
return Car();
}*/
}
上記のコードで次のエラーが発生します:-
check.cpp: In function ‘chk::Car chk::abc()’:
check.cpp:25: error: return type ‘struct chk::Car’ is incomplete
check.cpp:27: error: invalid use of incomplete type ‘struct chk::Car’
check.cpp:24: error: forward declaration of ‘struct chk::Car’
以下の abc() のコメントを外し、abc() の上のコメントを外すと、正常に動作します。c++ が名前空間内でクラスを宣言することを許可していないのはなぜですか?