gpt4 book ai didi

c++ - 编译时重定义错误

转载 作者:行者123 更新时间:2023-11-30 05:02:33 24 4
gpt4 key购买 nike

我一直在搜索其他论坛和问题,但似乎找不到与我的问题相关的答案。我一直在 .cpp 文件中收到此错误,提示“重新定义‘Shape’”,它同时出现在构造函数和函数中。

形状.h

#ifndef SHAPE_H
#define SHAPE_H

#include <iostream>
using namespace std;


class Shape {
private:
string name;
public:
Shape();
Shape(string name);
string getName() const;
friend ostream& operator << (ostream& output, const Shape & shape);
};

#endif // SHAPE_H

形状.cpp

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

Shape::Shape() {
this->name = "Shape";
}

Shape::Shape(string name) {
this->name = name;
}

string Shape::getName() const {
return name;
}

ostream& operator << (ostream& output, const Shape & shape) {
output << shape.getName();
return output;
}

最佳答案

我一直在 .cpp 文件中收到“重新定义‘Shape’”的错误?没有 Shape 只定义一次,只要确保两者是不同的文件即可。以及 Shape.cpp

两行下方的注释
//#include <iostream> /* already included in shape.h */
#include "Shape.h"
//using namespace std; /* already there in shape.h */

你可能需要像下面这样调用

int main() {
Shape obj("Nick Morin");
using std::cout<<obj;
return 0;
}

阅读这篇文章 Why is "using namespace std" considered bad practice?

关于c++ - 编译时重定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49849787/

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