невозможно использовать оператор dot для типа

#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, я не знаю, о чем я думал, когда писал это. Это было давным-давно. Молодая кровь, да?