#include using namespace std; template class Vehicle { public: void mass() { static_cast(this)->vmass(); } // no need to implement vmass here, as it should be implemented // by derived classes. }; class Car: public Vehicle { friend void Vehicle::mass(); private: void vmass() { cout << "Car's vmass called\n"; } }; class Truck: public Car, public Vehicle { friend void Vehicle::mass(); private: void vmass() { cout << "Car's vmass called\n"; } }; int main() { Truck{}.mass(); }