"Error: Redefinition of Class" - 但没有重新声明

"Error: Redefinition of Class" - But No Redeclaration

本文关键字:新声明 声明 Error Redefinition of Class      更新时间:2023-10-16

所以我有这个头文件:

#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