不同 CPP 文件中的单独类
separate classes in different cpp files
我正在尝试将类分离到不同的cpp文件。
我的文件是:
来源.h:
#pragma once
#include "stdafx.h"
#include <iostream>
class printData {
public:
void print(int i);
void print(double f);
void print(char* c);
};
资料来源.cpp:
#include "stdafx.h"
#include <iostream>
using namespace std;
class printData {
public:
void print(int i) {
cout << "Printing int: " << i << endl;
}
void print(double f) {
cout << "Printing float: " << f << endl;
}
void print(char* c) {
cout << "Printing character: " << c << endl;
}
};
控制台应用程序3.cpp:
#include "stdafx.h"
#include <iostream>
#include "Source.h"
using namespace std;
int main(void) {
printData pd;
// Call print to print integer
pd.print(5);
// Call print to print float
pd.print(500.263);
// Call print to print character
pd.print("Hello C++");
return 0;
}
但是当我尝试构建到项目时,我得到:
1>ConsoleApplication3.obj : error LNK2019: unresolved external symbol "public: void __thiscall printData::print(int)" (?print@printData@@QAEXH@Z) referenced in function _main
1>ConsoleApplication3.obj : error LNK2019: unresolved external symbol "public: void __thiscall printData::print(double)" (?print@printData@@QAEXN@Z) referenced in function _main
1>ConsoleApplication3.obj : error LNK2019: unresolved external symbol "public: void __thiscall printData::print(char *)" (?print@printData@@QAEXPAD@Z) referenced in function _main
如果我将所有文件合并到控制台应用程序 3 中.cpp则不会有错误。
这里有两个错误:
- 您不会在相应的.cpp文件中包含 .h 文件。
- .cpp文件中有一个类重定义。
在.cpp文件中,应按如下方式定义方法:
#include "stdafx.h"
#include <iostream>
#include "Source.h"
using namespace std;
void printData::print(int i) {
cout << "Printing int: " << i << endl;
}
void printData::print(double f) {
cout << "Printing float: " << f << endl;
}
void printData::print(char* c) {
cout << "Printing character: " << c << endl;
}
不要.cpp文件中编写此类 printData 等,因为它是 Source.h 中定义的类的另一个定义。您应该只按照上面显示的方式在.cpp文件中定义类方法本身。
编译器抱怨,因为主文件看到的所有.cpp都是 Source.h 文件,该文件有一个仅声明的类,未定义为 Source.cpp 不包含 Source.h。但是,即使您确实在Source.cpp中包含Source.h,由于上述原因,您也会遇到类重新定义错误。
相关文章:
- 如何将 2 个类分成单独的 .h 文件并正确设置它们
- 从单独的文件中读取树
- 为什么要将函数声明和定义放在单独的文件中
- 在单独的文件中类
- 如果类划分为单独的文件,则不调用默认构造函数
- 不同 CPP 文件中的单独类
- 使用类和指针从单独的文件中找到最大的价格
- C++ - 在单独的文件中实现内部模板类的模板方法
- 自动将C++类重构到单独的文件中
- 在单独的文件中C++类
- 在main()之前,在单独的文件中初始化/准备类对象
- 将数组存储在单独的类文件中
- 单独的类文件错误
- C++单独的类文件问题
- 当继承基模板类并将两个类文件放在单独的头文件中时,为什么会出现重定义错误
- 如何将类放置在单独的文件中(C++)
- 在单独的文件中定义的类
- (C++)在单独的文件中创建 std::expection 类时,输入错误末尾的预期"{"
- C++编译器问题 (?):无法将参数传递给单独类文件中的函数
- 如果从类(在单独的文件中)调用SDL UpdateWindowSurface(),则返回-1