#c
#c
Вопрос:
привет, итак, в принципе, я новичок в программировании, и у меня была эта проблема с моей первой программой class / header.
(the cartest.cpp является основным, и он не завершен, просто хотел проверить, как все идет (предупреждение о спойлере не подходит))
car.hpp
class car {
private:
string carid;
string carName;
double car_capacity ;
double benzinverbrauch;
double _fillLevel;
double _milage;
public:
bool refuel (const double benzinmenge);
double drive (double dist);
double fillLevel();
double reach();
double milage();
};
car.cpp
#include "car.hpp"
bool car::refuel (double benzinmenge) {
if (benzinmenge _fillLevel <=car_capacity){
_fillLevel=benzinmenge _fillLevel;
return true;
}
else {
return false;
};
};
double car::drive (const double dist){
if (reach()<=dist) {
_fillLevel=0;
return reach();}
else {
_fillLevel=_fillLevel-(dist*benzinverbrauch/100);
return dist;
};
};
double car::reach (){
return (_fillLevel*100)/benzinverbrauch;
};
double car::fillLevel()
{return _fillLevel;};
double car::milage()
{return _milage;};
cartest.cpp
#include "car.hpp"
int main(){
double car_capacity=50 ;
double benzinverbrauch=50;
double _fillLevel=0;
car.refuel (20.0);
cout<<car.fillLevel()<<endl;
}
Комментарии:
1. Вам нужно понимать разницу между классом (определение типа) и объектом или экземпляром этого класса. Для данного класса существует только одно определение, но вы можете создать множество экземпляров. Вы не создали экземпляр
car
. Например.car c;
2. Еще одно замечание: после закрывающей скобки else в функции bool car::refuel() в car.cpp файл
Ответ №1:
Продолжая комментарий @Jonathon Reinhart, Class определил, как ведут себя ваши объекты. Но вам также нужны объекты, которые будут вести себя таким образом. Для объявления переменной используется синтаксис:
<Class> <object>
Например:
car c;
Чтобы использовать функцию, вам нужно использовать объект. Синтаксис такой:
<object>.<function>
Например:
c.refuel(20.0);
Комментарии:
1. Спасибо @miken32, я не знаю, о чем я думал, когда писал это. Это было давным-давно. Молодая кровь, да?