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

C++ 包含类文件后的错误消息(多个定义的符号),c++,class,C++,Class,我正在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 s

我正在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,但在编译时,我得到了这个无休止的错误消息:


希望您知道我做错了什么,欢迎您提出任何意见。

问题似乎是在您的main.cpp文件中包含tttAi.cpp。
您不应该包含cpp文件

问题似乎是在main.cpp文件中包含tttAi.cpp。
您不应包含cpp文件

您多次包含包含定义的cpp文件,即您不应写入

#include "tttAi.cpp"
在main.cpp文件中,因此违反了


请记住,包含文件意味着在包含点复制该文件的内容,因此也会复制您的定义。

您多次包含包含定义的cpp文件,即,您不应写入

#include "tttAi.cpp"
在main.cpp文件中,因此违反了


请记住,包含文件意味着在包含点复制该文件的内容,因此也会复制您的定义。

您不应包含.cpp文件。相反,编译时只需在命令行中列出它们。

不应包括.cpp文件。相反,编译时只需在命令行上列出它们。

请复制并粘贴错误消息,而不是发布屏幕截图。请复制并粘贴错误消息,而不是发布屏幕截图。ODR是什么意思?我认为使用一个没有解释的缩写比对一个新手对C++有帮助要更令人困惑。添加了更多的上下文。ODR是什么意思?我认为使用一个没有解释的缩写比对一个新手对C++有帮助要更令人困惑。添加了更多的上下文。