我读到“如果你在头文件(Header.h)中声明并实现一个函数,并且如果这个文件被包含两次,那么你很可能会在某个时候得到一个函数已经定义的错误。”。但是在我的代码中,我遇到错误的所有函数都在一个 .cpp 文件中。
列表.h
#pragma once
typedef struct list
{
int lin;
int col;
int val;
struct list* next;
struct list* prev;
}list;
列表.cpp
#include "List.h"
bool empty(list*& start)
{
return (start == nullptr);
}
矩阵.h
#pragma once
#include "List.h"
class Matrice
{
private:
list* start;
list* finish;
public:
Matrice() :start(nullptr), finish(nullptr) {}
Matrice(const Matrice& matrice);
};
矩阵.cpp
#include "Matrice.h"
#include "List.cpp"
Matrice::Matrice(const Matrice& matrice)
{
if (empty(start))
{
// Code
}
}
源.cpp
#include "Matrice.h"
#include <iostream>
int main()
{
Matrice a;
Matrice b;
a = b;
}
我添加了所有文件,也许有一些我看不到的东西。错误出在bool empty(list*& start)
函数上(“已在List.obj
”中定义)。