如何将矢量对象传递给虚函数

How to pass vector object to a virtual function?

本文关键字:函数 对象      更新时间:2023-10-16

谁能告诉我如何将向量传递给虚函数?当我尝试编译时,我收到一些错误,例如"Car":未声明的标识符和"Car"无法实例化抽象类?有人猜我做错了什么吗?

#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <tchar.h>
#include <stdlib.h>
#include <string>
#include <vector>
using namespace std;

class Handling
{
public:
    virtual void add_car() = 0;
    virtual void erase_car() = 0;
    virtual void show_car(vector<Car> _carvector) = 0;
};

class Car : virtual public Handling
{
public:
    string manufacturer;
    string model;
    string type;
    int engine;
    string enginetype;
    int yearofproduction;
    string geartype;
    int noofgears;
    string price;
    _manufacturer = "Opel";
_model = "Astra";
_type = "Hatchback";
_engine = 1900;
_enginetype = "Diesel";
_yearofproduction = 1999;
_geartype = "Manual";
_noofgears = 5;
_price = "5600";
    Car(){};
    Car(string _manufacturer, string _model, string _type, int _enigne, string _enginetype, int _yearofproduction, string _geartype, int _noofgears, string _price);
    void add_car()
    {
    }
    void erase_car()
    {
    }
    void show_car(vector<Car> _carvector)
    {
        for (int i = 0; i < _carvector.size(); i++)
        {
            cout << "Samochod nr. " << i + 1 << endl;
            cout << "------------------------------" << endl;
            cout << "Marka: " << _carvector[i].manufacturer << endl;
            cout << "Model: " << _carvector[i].model << endl;
            cout << "Typ: " << _carvector[i].type << endl;
            cout << "Pojemnosc silnika: " << _carvector[i].engine << " cm3" << endl;
            cout << "Rodzaj silnika: " << _carvector[i].enginetype << endl;
            cout << "Rok produkcji: " << _carvector[i].yearofproduction << endl;
            cout << "Rodzaj skrzyni biegow: " << _carvector[i].geartype << endl;
            cout << "Liczba biegow: " << _carvector[i].noofgears << endl;
            cout << "Cena: " << _carvector[i].price << " PLN" << endl;
            cout << endl;
        }
    }
};
Car::Car(string _manufacturer, string _model, string _type, int _engine, string _enginetype, int _yearofproduction, string _geartype, int _noofgears, string _price)
    : manufacturer(_manufacturer)
    , model(_model)
    , type(_type)
    , engine(_engine)
    , enginetype(_enginetype)
    , yearofproduction(_yearofproduction)
    , geartype(_geartype)
    , noofgears(_noofgears)
    , price(_price)
{
}
int main()
{
vector<Car> carvector;
Car carobject;
    string _manufacturer;
    string _model;
    string _type;
    int _engine;
    string _enginetype;
    int _yearofproduction;
    string _geartype;
    int _noofgears;
    string _price
carvector.push_back(Car(_manufacturer, _model, _type, _engine, _enginetype,_yearofproduction, _geartype, _noofgears, _price));
carobject.show_car(carvector);

在 Handling 类声明之前放置的那一小行代码就是这样做的。

class Car;