这是什么C++语法?

greatverve 2012-12-02 08:42:12
我知道这种用法,但是不知道这属于什么语法,请教高手。
在源文件.cpp中包含(#include)一个类的头文件,在头文件中使用这个类。
只能在头文件中定义指针变量,并且要用一种特别的语法:
namespace oracle
{
namespace occi
{
class CFor;
}
}

// 使用者
// 头文件
#pragma once
namespace oracle
{
namespace occi
{
class CFor;
}
}
class CUse
{
public:
CUse(void);
~CUse(void);
public:
oracle::occi::CFor *m_pFor;
};
// 源文件
#include "Use.h"
#include "For.h"
CUse::CUse(void)
{
m_pFor->test();
}
CUse::~CUse(void)
{
}

// 被使用者
// 头文件
#pragma once
namespace oracle
{
namespace occi
{
class CFor
{
public:
CFor(void);
~CFor(void);
public:
void test();
};
}
}
// 源文件
#include "For.h"
using namespace oracle::occi;
CFor::CFor(void)
{
}
CFor::~CFor(void)
{
}
void CFor::test()
{
}

url:http://greatverve.cnblogs.com/archive/2012/12/02/cpp-what.html
谁如果知道哪本书上有讲解,请指教,谢谢。
...全文
306 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
greatverve 2012-12-24
  • 打赏
  • 举报
回复
我已经知道了,在博客园博客发表了。 下面几个,我晕,我难道连命名空间也不懂。
xumaojun 2012-12-04
  • 打赏
  • 举报
回复
自己搜索一下命名空间看看,看书的话楼上几位都推荐了。
WitcherLu 2012-12-04
  • 打赏
  • 举报
回复
如果LZ问的是oracle::occi::CFor 这种写法的话,那就是嵌套命名空间。C++ Primer Plus上也有讲解
formydream1 2012-12-03
  • 打赏
  • 举报
回复
Effective C++中有一些相关的内容,不过也不是在语法层面上讲,你可以去看看
greatverve 2012-12-03
  • 打赏
  • 举报
回复
引用 4 楼 formydream1 的回复:
在类的头文件中,如果要用到其他的类,而且该类只是被定义为指针,引用,或者形参,返回值,那么该类最好只是前向定义。此目的在于避免多个源文件之间的编译依赖,编译器接受这样的写法,而且也都鼓励这样写 这边应该是相同道理吧
是你说的那样,编译依赖。 问题是哪本书上讲这种语法?
formydream1 2012-12-02
  • 打赏
  • 举报
回复
在类的头文件中,如果要用到其他的类,而且该类只是被定义为指针,引用,或者形参,返回值,那么该类最好只是前向定义。此目的在于避免多个源文件之间的编译依赖,编译器接受这样的写法,而且也都鼓励这样写 这边应该是相同道理吧
漫步者、 2012-12-02
  • 打赏
  • 举报
回复
引用 2 楼 greatverve 的回复:
引用 1 楼 ganpengjin1 的回复:引用 楼主 greatverve 的回复:我知道这种用法,但是不知道这属于什么语法,请教高手。 在源文件.cpp中包含(#include)一个类的头文件,在头文件中使用这个类。 只能在头文件中定义指针变量,并且要用一种特别的语法: namespace oracle { namespace occi { c……
可以,可以的,不过,一般我们是头文件和源文件都是分开写,其实都是可以放在一起进行编译,链接的!!
greatverve 2012-12-02
  • 打赏
  • 举报
回复
引用 1 楼 ganpengjin1 的回复:
引用 楼主 greatverve 的回复:我知道这种用法,但是不知道这属于什么语法,请教高手。 在源文件.cpp中包含(#include)一个类的头文件,在头文件中使用这个类。 只能在头文件中定义指针变量,并且要用一种特别的语法: namespace oracle { namespace occi { class CFor; } } //……
放在头文件中是毫无疑问的事,问题是放在源文件中,也能被头文件使用。
漫步者、 2012-12-02
  • 打赏
  • 举报
回复
引用 楼主 greatverve 的回复:
我知道这种用法,但是不知道这属于什么语法,请教高手。 在源文件.cpp中包含(#include)一个类的头文件,在头文件中使用这个类。 只能在头文件中定义指针变量,并且要用一种特别的语法: namespace oracle { namespace occi { class CFor; } } // 使用者 // 头文件 #pragma……
C++primer 有讲解,就是讲述的命名空间如何使用,这个定义是可以放在头文件中的

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧