包含类文件后的错误消息(多个定义的符号)

Error messages (multiple defined symbols) after including a class file

本文关键字:定义 符号 消息 文件 错误 包含类      更新时间:2023-10-16

我在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文件。相反,只需在编译时在命令行上列出它们。