"Error: Redefinition of Class" - 但没有重新声明
"Error: Redefinition of Class" - But No Redeclaration
所以我有这个头文件:
#include <iostream>
#include <string>
class Furniture
{
float width, height, depth;
std::string name;
public:
// Constructor
Furniture(std::string name);
void ReadDimensions();
virtual void Print();
};
而这个.cc文件来定义上面声明的函数:
#include "Furniture.h"
Furniture::Furniture(std::string name)
{
this->name = name;
}
void Furniture::ReadDimensions()
{
// Read width
std::cout << "Enter width: ";
std::cin >> width;
// Read height
std::cout << "Enter height: ";
std::cin >> height;
// Read depth
std::cout << "Enter depth: ";
std::cin >> depth;
if (width <= 0 || height <= 0 || depth <=0)
std::cout << "You entered invalidd valuesn";
}
当我尝试编译我的主文件时,其中包括在他们自己的文件中编写的两个子类,它给了我一个错误,内容如下
"家具.h:4:错误:重新定义'类家具'
Furniture.h:5:错误:以前对'类家具'的定义"
但据我所知,我正确地声明了该类,并且没有在定义中重新声明它。为什么它给我这个错误,我该怎么做才能解决它?
尝试在 .h 文件中添加以下代码。这将防止重新定义。
#ifndef __FURNITURE_H__
#define __FURNITURE_H__
#include <iostream>
#include <string>
class Furniture
{
float width, height, depth;
std::string name;
public:
// Constructor
Furniture(std::string name);
void ReadDimensions();
virtual void Print();
};
#endif
相关文章:
- 我们可以在没有新实例化的情况下声明一个抽象方法来返回抽象超类中的子类对象吗
- 新运算符分配的大小大于声明的大小.为什么
- 为什么我不能只用前向声明 c++ 声明类的静态成员?
- 垫子声明:声明尺寸和大小()不同
- 如何从构造函数声明新的私有变量?
- 使用具有新信号槽语法的Qt插件系统在接口类中声明信号
- 使用 basic_string 声明新类型的字符串
- 声明数组时出现 SIGSEGV 错误,而不创建新的 int[size]
- STD :: bad_alloc在声明新的int [n]时
- 了解函数错误的歧义新声明
- 在C++中,如何在没有新元素且不单独声明单个元素的情况下创建"std::initializer_list<base *>"?
- 使用模板在类中声明新函数
- 元编程:动态声明一个新结构
- 使用括号会在声明新节点时会产生错误
- QT应用程序声明新对象后崩溃
- 新声明在使用delete时包含垃圾值和堆损坏
- 为什么新运算符没有声明为 [[nodiscard]]?
- 您只是调用前方声明和原型声明“声明”
- C++:友元声明'声明一个非模板函数
- C++在新函数声明器语法中访问此