`
aigo
  • 浏览: 2676286 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

[C++]命名空间不同的两个类,如何在头文件中做声明

阅读更多

原文作者:@玄冬Wong

问题是这样的,有两个类,且两个类所属命名空间不一样:

 

namespace NA
{
	class A
	{
	}
}

 

namespace NB
{
	class B
	{
	}
}

 

 

假设B类中有个A的成员变量,然后我们又不想在B类头文件中引用A类的头文件(为了加快编译速度)。

如果是两个都没有命名空间的类,那么好办:

class A;

class B
{
	A* val;
}

 

如果有命名空间了,且命名空间不同,那么命名空间如何处理?

方式如下:

namespace NA
{
	class A;
}

namespace NB
{
	class B
	{
		A* val;
	}
}

 这样就能在B类头文件中不用引用A的头文件了。

 

再说一种情况,如果A类和B类命名空间相同,方式如下:

namespace NB
{
	class A;
	
	class B
	{
		A* val;
	}
}

 

分享到:
评论

相关推荐

    C++头文件转delphi .pas

    C++的头文件通常包含了类定义、函数声明、枚举、结构体等信息,这些信息在Delphi中需要以相应的类型来表示。例如,C++的类在Delphi中对应的是记录类型或接口类型,函数声明则需要转化为Delphi的函数或过程声明。转换...

    C++头文件手册

    因此,`<stdio.h>`、`<stdlib.h>`、`<math.h>`等C头文件在C++中也可以使用,但推荐使用对应的没有后缀`.h`的C++版本,如`<cstdio>`、`<cstdlib>`、`<cmath>`,这些头文件提供了C++风格的命名空间,避免了命名冲突。...

    C++各种函数及对应的头文件

    - **命名空间**:用于组织和区分不同的元素,如`std`命名空间包含了大部分C++标准库的元素。 #### 标准库函数详解 ##### 通用算法 - **排序算法**: - `sort()`:对容器进行排序,位于`<algorithm>`头文件中。该...

    标准C与C++头文件大全.zip

    在编程领域,C和C++是两种非常重要的编程语言,被广泛应用于系统级编程、游戏开发、嵌入式系统以及高性能计算等多个领域。标准C与C++头文件是这两种语言的核心组成部分,它们提供了预定义的函数、数据类型、宏和其他...

    C++命名空间 C++ Builder代码演示

    同时,我们还需要确保在头文件(如`Unit1.h`)中正确处理命名空间,通常使用`extern`关键字来声明外部定义的命名空间成员,或者使用`#include`指令引入其他源文件中的命名空间。 ```cpp // Unit1.h #ifndef UNIT1_H...

    C++ std命名空间.pdf

    例如,两个不同的命名空间可以定义同名的类,如`MyNamespace1::MyClass`和`MyNamespace2::MyClass`,在各自的命名空间内它们互不影响。在需要使用这些类时,必须使用完全限定名称,如`MyNamespace1::MyClass x;`和`...

    C++命名空间.pdf

    C++标准库中的所有函数、类和其他标识符都被定义在一个名为`std`的命名空间内。这使得我们可以明确地知道哪些标识符属于标准库,而不会与我们自己定义的标识符混淆。 首先,关于 `<iostream>` 和 `<iostream.h>` 的...

    有关c++的头文件说明

    头文件的组织可以遵循几种模式,如单头文件(所有内容在一个头文件中),多头文件(每个类一个头文件),或模块化头文件(一组相关功能的集合)。选择哪种模式取决于项目规模和需求。 11. **头文件和链接错误** ...

    C++ std命名空间 (2).pdf

    例如,假设在`x.h`和`y.h`中分别定义了一个名为`MyClass`的类,那么在`z.cpp`中引入这两个头文件并使用它们时,需要明确指出使用哪个命名空间中的`MyClass`: ```cpp #include "x.h" #include "y.h" void z::f() {...

    编程:C++命名空间的使用 学习心得

    这样,即使两个头文件都包含在同一个程序中,`one::String`和`SomeLib::String`也不会产生冲突,因为它们的全限定名不同。全限定名是指在哪个命名空间内的对象,如`one::String`和`SomeLib::String`。 在使用命名...

    C++新手必问之头文件

    3. **`<cstring>`与`<string.h>`**:这两个头文件都提供了字符串操作相关的函数,例如`strcpy`, `strlen`等。`<cstring>`是C++标准库的一部分,而`<string.h>`则源自C标准库。尽管它们提供了相似的功能,但`...

    C语言和C++的头文件

    在编程世界中,C语言和C++是两种广泛使用的编程语言,它们各有特色且相互关联。C语言以其高效、简洁和强大的系统编程能力而闻名,而C++则在此基础上引入了面向对象编程的概念,增强了软件设计的能力。这篇文章将深入...

    c++制作自己的namespace命名空间

    在C++中,你可以通过以下方式定义一个命名空间: ```cpp namespace 名称 { // 在这里声明你的变量、函数、类等 } ``` 例如,我们可以创建一个名为`MyLibrary`的命名空间: ```cpp namespace MyLibrary { int ...

    C++ std命名空间 (2).docx

    【C++命名空间详解】 命名空间(namespace)是C++编程语言中的一种机制,用于组织代码,避免在大型项目中由于标识符重名而引发的冲突。命名空间通过定义一个独立的作用域,使得在同一程序中可以有多个同名标识符而...

    vc++6.0 头文件大全

    9. **头文件和源文件的关联**:在C++项目中,头文件通常包含类声明和函数原型,而源文件则实现具体的函数和类。头文件通过`#ifndef`、`#define`、`#endif`等宏防止重复包含,以保持编译的一致性。 10. **头文件的...

    常用的c++头文件大全.pdf

    `<iostream>`包含了这两个头文件,因此在处理输入/输出流时通常直接包含`<iostream>`。 6. `<string>`:这个头文件定义了`std::string`类,C++中的字符串类,提供了丰富的字符串操作方法,如拼接、查找、替换等。 ...

    C、C++头文件介绍

    8. `<typeinfo>`和`<exception>`:这两个头文件涉及到运行时类型信息和异常处理,用于在程序中捕获和处理异常。 9. `<cmath>`和`<math.h>`:提供数学函数,如三角函数、指数和对数等。在C++中,通常使用`<cmath>`,...

    C语言和C++在声明和定义之间的区别是什么

    而在C++中,声明可以更复杂,尤其是涉及到类成员、命名空间等高级特性时。例如,在C++中,使用`extern`关键字进行外部变量的声明: ```cpp extern std::string name; // C++中name的声明 ``` 这里的关键点是,声明...

    danei c++ 学习笔记

    输入输出流通常通过`iostream`头文件实现,例如`std::cout`用于输出,`std::cin`用于输入,这两个都在`std`命名空间内。`using namespace std;`可以让程序员避免每次都使用`std::`前缀,但可能引发命名冲突,因此在...

    c++程序using声明和using编译指令.zip

    在C++编程语言中,`using`声明和`using`编译指令是两个重要的概念,它们都用于在命名空间(namespace)中引入特定的标识符,以便于代码的编写和可读性。让我们深入探讨这两个主题。 首先,我们来看`using`声明。在...

Global site tag (gtag.js) - Google Analytics