我得到了一堆文件夹,每个文件夹中都有一个 .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/