如何向前声明命名空间里的类?

时间:2022-09-08 09:00:02
在一个头文件中?求解啊.例如 list,,,要求头文件中不能包含 list头文件. 

9 个解决方案

#1


没人了吗?放假去了吗?

#2


非模板类写句class list;就行了。模板类不行的。

#3


要这么声明:


namespace example
{
    class list { }
}

.....
class example::list;

#4


看到list,我还以为是想前向声明模板类……

#5


对不起,没办法前置声明命名空间里的东西,因为那是命名空间里的东西,如果连命名空间里有什么东西都不知道,自然不能声明。

class A::Test;

void function(A::Test &obj);

你在一个.cpp里写一句这个,能编译过就神了。

首先,编译器不知道A是个什么,是类还是命名空间? 其次,编译器也不知道A里有没有Test。

源文件独立编译,目标文件共同链接,只有指针和引用可以使用前置声明。

#6


到底是模板类不行呢?还是怎么的?

#7


using namespace A;
class List;

#8


引用 7 楼 car_mack 的回复:
using namespace A;
class List;


.h中不是最好用完全限定符吗?

#9


我弄错了
你看看这篇前置声明的文章
http://software.intel.com/zh-cn/blogs/2010/05/04/c-2/

#1


没人了吗?放假去了吗?

#2


非模板类写句class list;就行了。模板类不行的。

#3


要这么声明:


namespace example
{
    class list { }
}

.....
class example::list;

#4


看到list,我还以为是想前向声明模板类……

#5


对不起,没办法前置声明命名空间里的东西,因为那是命名空间里的东西,如果连命名空间里有什么东西都不知道,自然不能声明。

class A::Test;

void function(A::Test &obj);

你在一个.cpp里写一句这个,能编译过就神了。

首先,编译器不知道A是个什么,是类还是命名空间? 其次,编译器也不知道A里有没有Test。

源文件独立编译,目标文件共同链接,只有指针和引用可以使用前置声明。

#6


到底是模板类不行呢?还是怎么的?

#7


using namespace A;
class List;

#8


引用 7 楼 car_mack 的回复:
using namespace A;
class List;


.h中不是最好用完全限定符吗?

#9


我弄错了
你看看这篇前置声明的文章
http://software.intel.com/zh-cn/blogs/2010/05/04/c-2/