我只是想测试将代码分割成多个文件。
我有:
//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中使用的字符串。
答案 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(){
}