gpt4 book ai didi

c++ - 错误 : multiple definition of constructor

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

你能帮我知道如何避免这个错误吗..提前致谢。

文件名:point.hh

#ifndef POINT_H
#define POINT_H
class Point{
private:
int x;
int y;
public:
Point();
};
#endif

文件名:point.cc

#include "point.hh"
#include <iostream>
using namespace std;
Point::Point()
{
x=0;
y=0;
cout<<"x="<<x;
cout<<"y="<<y;
}

文件名:main.cc

#include"point.cc"
int main()
{
Point p; // calls our default constructor
}

最佳答案

您必须在 main.cc 文件中包含头文件,而不是源文件,才能使用 Point 类。

即替换:

#include"point.cc"

通过:

#include"point.hh"

这背后的基本原理是函数定义,除非标记为 inline,否则必须遵守 ODR(“单一定义规则”)。通过将源文件包含在其他源文件中,您最终会在两个不同的翻译单元中得到 Point::Point() 函数的两个(相同)定义。

当链接过程发生时,它看到这两个定义并提示:这就是你得到的错误。

关于c++ - 错误 : multiple definition of constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5832680/

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