我得到了一堆文件夹,每个文件夹中都有一个.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++是否有等效功能?
最佳答案
尝试将它们包括在不同的 namespace 中:
创建您的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/