gpt4 book ai didi

每个构造函数、方法和运算符重载的 C++ 多重定义错误

转载 作者:太空狗 更新时间:2023-10-29 20:05:10 29 4
gpt4 key购买 nike

<分区>

我意识到这里已经有很多“多重定义”问题,但我花了 2 个小时寻找解释,但没有找到。很抱歉,如果这是重复的。

现在我有 2 个类:Array.h 和 Vector.h。两者都没有任何全局变量,也不依赖于另一个(即 Array 不使用 Vector 而 Vector 不使用 Array)。实现在 .h 文件中。

这是我的 Main.cpp:

#include <iostream>
#include "Array.h"
#include "Vector.h"
using namespace std;

int main() {
cout << "Done" << endl;

return 0;
}

...一切正常。但是,当我创建另一个仅包含 #include 语句的 .cpp 文件时...

数据读取器.cpp

#include "Array.h"
#include "Vector.h"

...然后一切都崩溃了,我得到了 Vector 中每个方法、构造函数和运算符重载的一大堆错误:

DataReader.o: In function `Vector':
C:\C++\Eclipse CDT\workspace\3D_Adaptive_FEM\Debug/..//Vector.h:49: multiple definition of `Vector::Vector()'
TestMain.o:C:\C++\Eclipse CDT\workspace\3D_Adaptive_FEM\Debug/..//Vector.h:49: first defined here
DataReader.o: In function `Vector':
C:\C++\Eclipse CDT\workspace\3D_Adaptive_FEM\Debug/..//Vector.h:53: multiple definition of `Vector::Vector(int const&, int const&, int const&)'
TestMain.o:C:\C++\Eclipse CDT\workspace\3D_Adaptive_FEM\Debug/..//Vector.h:53: first defined here
DataReader.o: In function `Vector':
C:\C++\Eclipse CDT\workspace\3D_Adaptive_FEM\Debug/..//Vector.h:56: multiple definition of `Vector::Vector(double const&, double const&, double const&)'
TestMain.o:C:\C++\Eclipse CDT\workspace\3D_Adaptive_FEM\Debug/..//Vector.h:56: first defined here
DataReader.o: In function `ZNK6Vector1xEv':
C:\C++\Eclipse CDT\workspace\3D_Adaptive_FEM\Debug/..//Vector.h:59: multiple definition of `Vector::x() const'
TestMain.o:C:\C++\Eclipse CDT\workspace\3D_Adaptive_FEM\Debug/..//Vector.h:59: first defined here

etc...

但是如果我在 DataReader.cpp 中只有 #include "Array.h",那么一切都运行良好!

不适用于 #include "Array.h"#include "Vector.h" 可能有什么问题?

编辑:将实现分离到 .cpp 文件中修复了错误,但这并不能解释为什么我必须为 Vector 而不是 Array 这样做。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com