проблема класса в C ++ - PullRequest
0 голосов
/ 19 марта 2012

У меня есть это в 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: «Мебель», за которой следует «void», недопустима (вы забыли «;»?) c: \ final \ facultate \ poo \ laborator 1 \ furniture.cpp 3 1 POO_lab

Ошибка 2C2556: 'Furniture Furniture :: setname (std :: string)': перегруженная функция отличается только типом возврата от 'void Furniture :: setname (std :: string)' c: \ final \ facultate \ poo \ laborator 1 \ furniture.cpp 3 1 POO_lab

Ошибка 3, ошибка C2371: «Мебель :: имя_установки»: переопределение;различные базовые типы c: \ final \ facultate \ poo \ laborator 1 \ furniture.cpp 3 1 POO_lab

Ошибка 5, ошибка C2264: «Мебель :: setname»: ошибка в определении или объявлении функции;функция не называется c: \ final \ facultate \ poo \ laborator 1 \ furniture.cpp 19 1 POO_lab

Что я делаю не так?

Ответы [ 3 ]

7 голосов
/ 19 марта 2012

Вам не хватает ; в конце определения класса в заголовочном файле.

// ...snipped...

protected:
    static int NumberOfItems;
    int Id;

}; // <-- here
5 голосов
/ 19 марта 2012

Вы забыли точку с запятой в конце определения вашего класса.

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

Я ненавижу это в C ++:)

3 голосов
/ 19 марта 2012

Две вещи;

  • Вы не заканчиваете свое определение класса символом ;, вам нужен один в конце мебели.h.

  • Вы объявили, что есть конструктор и деструктор, но ни один из них не реализован в вашем файле .cpp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...