头文件包含和依赖项的顺序

时间:2015-07-28 08:48:06

标签: c++ dependencies header-files

我只是想测试将代码分割成多个文件。

我有:

//testMultiple.cpp

#include <string>
#include <iostream>
#include "testInclude.cpp"

int main(){
    std::cout << "hi";
}

//testInclude.cpp

class testClass{
    public:
        string x;
};

这是testInclude.cpp:3:9: error: ‘string’ does not name a type

我认为因为它包含了testInclude.cpp之前的包含,所以会定义在testInclude.cpp中使用的字符串。

3 个答案:

答案 0 :(得分:2)

您需要使用std::string代替string

答案 1 :(得分:1)

使用

class testClass{
    public:
        std::string x;
};

答案 2 :(得分:1)

您包含 cpp 文件,而非 hpp 文件。 通常的做法是包含头文件(h / hpp),而不是实现(c / cpp)文件。

如果你只编译testMultiple.cpp,这应该有效。如果编译器分别编译testInclude.cpp,则不会看到`#include

尝试将testInclude.cpp重命名为testInclude.hpp并确保其未被编译。

以下是一个例子:

///// testInclude.h
#include <vector>
class testClass{
    public:
         std::vector<int> x; // vector is in std namespace
};

///// testMultiple.cpp
// #include <vector> - gets this through testInclude.h
#include "testInclude.h"

int main(){
}