如何在 C++ 源文件中不使用类命名空间前缀?

A. Dziedziczak

我的头文件看起来像这样

#ifndef NORMALCLIENT_H
#define NORMALCLIENT_H

#include <ClientType.h>

class NormalClient : public ClientType {
public:
    NormalClient();
    NormalClient(const NormalClient& orig);
    double getDiscount();
    int getMaxRents();
    virtual ~NormalClient();
private:

};

#endif /* NORMALCLIENT_H */

和源文件:

#include "NormalClient.h"

NormalClient::NormalClient() {
}

NormalClient::NormalClient(const NormalClient& orig) {
}

NormalClient::~NormalClient() {
}

有没有办法不在NormalClient::源文件中重复我试过了:

#include "NormalClient.h"

using namespace NormalClient

NormalClient() {
}

NormalClient(const NormalClient& orig) {
}

~NormalClient() {
}

但它在编译过程中给了我错误:

/home/grayrattus/projekt/trunk/trunk/biblioteka/src/model/client_types/NormalClient.cpp:3:17: error: ‘NormalClient’ is not a namespace-name
 using namespace NormalClient
                 ^
/home/grayrattus/projekt/trunk/trunk/biblioteka/src/model/client_types/NormalClient.cpp:5:1: error: expected namespace-name before ‘NormalClient’
 NormalClient() {
 ^

我不明白为什么编译器在我之前定义它时会给出命名空间错误。

问题:有没有办法在源文件中不重复命名空间?

凯杰

编译器需要知道类声明对应的定义在哪里。

您刚刚在文件“ClientType.h”中声明了该类。另一方面,您需要定义类,它通常位于 cpp 文件中。

(关于声明和定义,参见https://stackoverflow.com/a/1410632/9043064

如果你想减少重复的源代码,那么你可以在你的头文件中定义类

class NormalClient : public ClientType {
public:
    NormalClient() { // implementation }
    NormalClient(const NormalClient& orig) { // implementation }
    double getDiscount() { // implementation }
    int getMaxRents() { // implementation }
    virtual ~NormalClient() { // implementation }
private:

};

但是不建议在头文件越来越大的情况下使用。它可能会增加构建时间。而且这也不是一个好习惯。( https://stackoverflow.com/a/333964/9043064 )

关于使用命名空间...我认为阅读本文会对您有所帮助(即使实际上不可能用于实现类定义)为什么“使用命名空间 std”被认为是不好的做法?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在命名空间的Cython中包含C ++类?

来自分类Dev

如何在不使用“ ..”的情况下包含与当前源文件不在同一目录中的C ++头文件?

来自分类Dev

如何在C#中的类元素中添加名称空间前缀

来自分类Dev

如何在Visual Studio 2003中重命名C ++源文件?

来自分类Dev

如何在Visual Studio 2003中重命名C ++源文件?

来自分类Dev

如何在C ++中重命名文件

来自分类Dev

如何在Visual Studio中查找没有命名空间的C#文件?

来自分类Dev

如何在C ++中的命名空间之间共享变量?

来自分类Dev

连接命名空间如何在C#中工作?

来自分类Dev

如何使用Python ctypes访问C ++命名空间和类

来自分类Dev

如何在XElement中使用特殊的“ xml”命名空间前缀

来自分类Dev

如何在XElement中使用特殊的“ xml”命名空间前缀

来自分类Dev

C#如何在不使用File.Move的情况下在File.Copy之后重命名文件

来自分类Dev

上传时如何在c#中重命名文件?

来自分类Dev

如何使用XSLT替换XML中的前缀和命名空间

来自分类Dev

不使用remove()函数如何在C程序中删除文件

来自分类Dev

如何在不使用 fseek 或 stat 的情况下在 C 中获取文件大小?

来自分类Dev

如何在 C++ 中命名约束

来自分类Dev

如何在C ++的命名空间中将类设为私有?

来自分类Dev

如何在C#中使用iTextSharp编辑PDF文件中的命名目标?

来自分类Dev

如何在C ++标头和源文件中使用NumPy C-API?

来自分类Dev

如何在WP 8.1或WP 8中的本机C ++中使用命名空间-Microsoft.Phone.Info

来自分类Dev

如何在C ++中将多个文件包装到同一个命名空间中

来自分类Dev

如何在c ++项目中访问Qt的资源文件?

来自分类Dev

如何从 xml 中删除前缀/命名空间

来自分类Dev

如何在Visual C ++ 2010中的源文件中“默认情况下”添加注释

来自分类Dev

如何在C ++中制作可比类

来自分类Dev

如何在C ++中实现静态类?

来自分类Dev

如何在C#中调用类

Related 相关文章

  1. 1

    如何在命名空间的Cython中包含C ++类?

  2. 2

    如何在不使用“ ..”的情况下包含与当前源文件不在同一目录中的C ++头文件?

  3. 3

    如何在C#中的类元素中添加名称空间前缀

  4. 4

    如何在Visual Studio 2003中重命名C ++源文件?

  5. 5

    如何在Visual Studio 2003中重命名C ++源文件?

  6. 6

    如何在C ++中重命名文件

  7. 7

    如何在Visual Studio中查找没有命名空间的C#文件?

  8. 8

    如何在C ++中的命名空间之间共享变量?

  9. 9

    连接命名空间如何在C#中工作?

  10. 10

    如何使用Python ctypes访问C ++命名空间和类

  11. 11

    如何在XElement中使用特殊的“ xml”命名空间前缀

  12. 12

    如何在XElement中使用特殊的“ xml”命名空间前缀

  13. 13

    C#如何在不使用File.Move的情况下在File.Copy之后重命名文件

  14. 14

    上传时如何在c#中重命名文件?

  15. 15

    如何使用XSLT替换XML中的前缀和命名空间

  16. 16

    不使用remove()函数如何在C程序中删除文件

  17. 17

    如何在不使用 fseek 或 stat 的情况下在 C 中获取文件大小?

  18. 18

    如何在 C++ 中命名约束

  19. 19

    如何在C ++的命名空间中将类设为私有?

  20. 20

    如何在C#中使用iTextSharp编辑PDF文件中的命名目标?

  21. 21

    如何在C ++标头和源文件中使用NumPy C-API?

  22. 22

    如何在WP 8.1或WP 8中的本机C ++中使用命名空间-Microsoft.Phone.Info

  23. 23

    如何在C ++中将多个文件包装到同一个命名空间中

  24. 24

    如何在c ++项目中访问Qt的资源文件?

  25. 25

    如何从 xml 中删除前缀/命名空间

  26. 26

    如何在Visual C ++ 2010中的源文件中“默认情况下”添加注释

  27. 27

    如何在C ++中制作可比类

  28. 28

    如何在C ++中实现静态类?

  29. 29

    如何在C#中调用类

热门标签

归档