C ++中的类问题

时间:2012-03-18 22:07:29

标签: c++ oop class methods

我在furniture.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;

}

这在furniture.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:'家具'后跟'无效'是非法的(你忘了';'?)c:\ final \ facultate \ poo \ laborator 1 \ furniture.cpp 3 1 POO_lab

错误2错误C2556:'Furniture Furniture :: setname(std :: string)':重载函数的区别仅在于'void Furniture :: setname(std :: string)'c:\ final \ facultate \ poo \ laborator 1 \ furniture.cpp 3 1 POO_lab

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

错误5错误C2264:'Furniture :: setname':函数定义或声明中的错误;功能不叫c:\ final \ facultate \ poo \ laborator 1 \ furniture.cpp 19 1 POO_lab

我做错了什么?

3 个答案:

答案 0 :(得分:7)

您在头文件的类定义末尾缺少;

// ...snipped...

protected:
    static int NumberOfItems;
    int Id;

}; // <-- here

答案 1 :(得分:5)

你在课堂定义的最后忘记了一个分号。

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

我讨厌C ++:)

答案 2 :(得分:3)

两件事;

  • 您没有使用;结束您的班级定义,您需要在furniture.h的末尾使用一个。

  • 您已声明存在构造函数和析构函数,但您的.cpp文件中均未实现。