包含类文件后的错误消息(多个定义的符号)
Error messages (multiple defined symbols) after including a class file
我在linux mint上使用g++编译器。我正在为神经网络女巫做一个课程,我想玩井字游戏。我的标题:
#ifndef tttAi
#define tttAi
#include <string>
class Synaps{
public:
explicit Synaps(const std::string& n, double v);
void add(double ad);
void multi(double mu);
void save();
double read();
private:
std::string name;
double Syn_value;
};
#endif
我的函数是:
#include "tttAi.h"
#include <fstream>
#include <string>
Synaps::Synaps(const std::string& n, double v)
:name(n), Syn_value(v){
}
void Synaps::add(double ad) { //change by addition
Syn_value += ad;
}
void Synaps::multi(double multip) { //change by multiplication
Syn_value *= multip;
}
double Synaps::read() {
return Syn_value;
}
这就是我希望它做的事情:
#include <iostream>
#include "tttAi.h"
#include "tttAi.cpp"
int main() {
Synaps n1n6("n1n6", 75);
n1n6.multi(2);
std::cout << n1n6.read() << 'n';
/*Want it to just output the value of Syn_value Witch at
this point should be 150 if i have done everything right*/
}
使用的命令: g++ -Wall -std=c++14 *cpp
所以我认为我得到的只是 150 的 consol 输出,但在编译时我收到这条无休止的错误消息:在此处输入图像描述
希望你知道我做错了什么,欢迎任何想法。
您多次包含一个包含定义的 cpp 文件(即您不应该编写
#include "tttAi.cpp"
在您的主.cpp文件中),因此违反了 ODR - 一个定义规则。
请记住,包含文件意味着在包含点复制该文件的内容(因此也复制您的定义)。
问题似乎在您的主文件中 #include"tttAi.cpp.cpp。不应包含 cpp
不应#include
.cpp文件。相反,只需在编译时在命令行上列出它们。
相关文章:
- vscode g++链路故障:体系结构x86_64的未定义符号
- 为函数定义符号不明确的指针参数
- 体系结构x86_64的未定义符号:std:terminate(),typeinfo,运算符delete[],运算符new
- C++ 中 dlsym 的未定义符号
- 仅在 MacOS 上析构函数的未定义符号
- OSX clang++:用于 cpp 文件中显式实例化模板的体系结构x86_64的未定义符号
- PCL 出错:体系结构x86_64 @pcl的未定义符号
- clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 体系结构的未定义符号 x86_64:
- 体系结构x86_64的未定义符号:链接器错误
- C++ std::vector<int> 体系结构的未定义符号 x86_64:
- 生成文件:体系结构x86_64的未定义符号
- libc++abi未定义符号:_ZTVN10__cxxabif120__si-class_type_infoE
- Xcode"体系结构x86_64的未定义符号"
- 体系结构x86_64的未定义符号:找不到原因
- SWIG链接器:未定义符号:_ZN2cv8fastFreeEPv(cv::fastFree(void*))
- 如何修复架构x86_64的未定义符号,Boost Asio 1.58
- 在Qt5上去静态库:架构的未定义符号x86_64:
- 体系结构x86_64的未定义符号:c++/ h 文件和 cpp 文件
- 为什么链接器报告全局函数的乘法定义符号,而不是类静态方法
- 监视 SDK 下的未定义符号"__Unwind_SjLj_Unregister"