c++ - C++ 中的 "Include as"

标签 c++ include

我得到了一堆文件夹,每个文件夹中都有一个 .cc 和一个头文件。所有文件夹中文件的实际名称都相同。因此,如果有两个文件夹,结构将是:

.
├── f1
│   ├── SomeClass.cc
│   ├── SomeClass.h
└── f2
    ├── SomeClass.cc
    └── SomeClass.h

现在不幸的是,SomeClass 在每种情况下的实现都略有不同,我需要将所有不同的实现包含在一个文件中。在Python中我可以做类似的事情

 from .f1.SomeClass import SomeClass as FirstImplementation
 from .f2.SomeClass import SomeClass as SecondImplementation

C++ 有等效的吗?

最佳答案

尝试将它们包含在不同的命名空间中:

创建您的 SomeClass.h:

namespace SomeClass1
{
#include "f1/SomeClass.h"
}

namespace SomeClass2
{
#include "f2/SomeClass.h"
}

并创建您的 SomeClass.cc:

namespace SomeClass1
{
#include "f1/SomeClass.cc"
}

namespace SomeClass2
{
#include "f2/SomeClass.cc"
}

但是您需要确保这四个文件包含的所有 header 都包含在命名空间之前。例如。如果它们包括 <string> , <vector> , "someHeader.h"那么您需要在 namespace SomeClass1 之前包含这些 header :

#include <string>
#include <vector>
#include "SomeHeader.h"

namespace SomeClass1
{
...

然后尝试在您的代码中使用它们:

//instead of #include "f1/SomeClass.h"
#include "SomeClass.h"

SomeClass1::SomeClass c1;
...
SomeClass2::SomeClass c2;
...

现在您编译 .cpp 文件而不是两个原始文件:

g++ -std=c++11 main.cpp SomeClass.cpp -o main

关于c++ - C++ 中的 "Include as",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43799070/

相关文章:

c++ - 使用 sqlite 合并执行项目时的命令窗口

c++ - 资源句柄 - 禁止默认构造函数?

c - Oracle Proc如何查找C头文件?

c++ - GUI 调试器和终端调试器之间的区别

c++ - 在编译时获取表达式的类型

c++ - 为什么 char* 总是和字符串的 len 一起传递给 FUNCTION

linux - 不能在 Linux 上包含自由类型 header

qt - 包含来自单独目录的文件时的 undefined reference

python - 使用 Python 将代码直接导入脚本?

php - 为什么 PHP 不包括我的文件,而它显然存在?