В следующем примере, почему я не могу вызвать car.getFuelConsvention
class Road {
public:
double length(); // km
int speed(); // km per hour ;
};
class Car {
protected:
virtual double getFuelConsumption(int speed_in_km) = 0;
};
class Tank: public Car{
public:
double getFuelConsumption(int speed_in_km) {
return 1;
}
};
double getPetrol(std::vector<Road> roads, const Car &car) {
double total_fuel_consumption=0;
for (int i=0;i<roads.size();++i)
{
double fuel_consumption_per_road = car.getFuelConsumption(roads[i].speed());
}
return total_fuel_consumption;
}
У каждой машины есть такой метод, так почему я не могу его вызвать? Например, если я отправлю Tank на getPetrol()
, я ожидаю, что он сработает, и вызову версию Tank getFuelConsumption()
Undefined symbols for architecture x86_64: "Road::speed()", referenced from:
getPetrol(std::__1::vector<Road, std::__1::allocator<Road> >, Car const&)
in main.cpp.o ld: symbol(s) not found for architecture
x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)