C++中的类问题

class issue in C++

本文关键字:问题 C++      更新时间:2023-10-16

我在家具里有这个。h:

#include <iostream>
#include <string>
using namespace std;
class Furniture {
public:
    Furniture();
    virtual ~Furniture();
    void setname(string name);
    void setprice(double price);
    int getprice();
    string getname();
private:
    string name;
    int price;
protected:
    static int NumberOfItems;
    int Id;
}

这个在家具.cpp

#include "furniture.h"
void Furniture::setname(string name) {
    this->name = name;
}
string Furniture::getname()
{
    return this->name;
}
void Furniture::setprice(double price) {
    this->price = price;
}
int Furniture::getprice() {
    return this->price;
}
int main() {
    Furniture *model = new Furniture();
    model->setname("FinalDestiny");
    model->setprice(149.99);
    cout<<"Model name: "<<model->getname()<<" - price = "<<model->getprice();
}

但我遇到了一些错误,比如:

错误1错误C2628:"Furniture"后面跟着"void"是非法的(你忘了一个";"吗?)c:\final\afacultate\poo\laborator 1\Furniture.cpp 3 1 poo_lab

错误2错误C2556:"Furniture Furniture::setname(std::string)":重载函数仅在返回类型上与"void Furniture:setname(std::string)"c:\final\afacultate\poo\laborator 1\Furniture.cpp 3 1 poo_lab "不同

错误3错误C2371:"Furniture::setname":重新定义;不同的基本类型c:\final\afacultate\poo\laborator 1\furniture.cpp 3 1 poo_lab

错误5错误C2264:"Furniture::setname":函数定义或声明中存在错误;函数未调用c:\final\afacultate\poo\laborator 1\furniture.cpp 19 1 poo_lab

我做错了什么?

在头文件中的类定义末尾缺少一个;

// ...snipped...
protected:
    static int NumberOfItems;
    int Id;
}; // <-- here

您忘记了类定义末尾的分号。

// ...
protected:
    static int NumberOfItems;
    int Id;
}; // <--

我讨厌C++:)

两件事;

  • 你不是用;来结束你的类定义,你需要在家具的末尾加一个

  • 您已经声明有构造函数和析构函数,但它们都没有在.cpp文件中实现。