Hi, I'm trying to instantiate a list using the stl and I want to instantiate the list as pointers of a parent class Transport. Transport however has abstract virtual functions and my compiler is giving me an error because of it. This is the first time I've been allowed to use the stl containers so im not sure if im using it incorrectly or if something is actually wrong with my class. Below is Transport.h and my line of code trying to make the list. The virtual functions in Transport are also declared as virtual in the children of transport and are actually implemented in the grandchildren.

Tranport.h
Code:
#ifndef TRANSPORT_H_
#define TRANSPORT_H_

#include <iostream>

class Transport{
      public:
             Transport(){}
             double get_cost() const {return cost;}
             void set_cost(double c) {cost = c;}
                          
             virtual void calc_cost() = 0;
             virtual void output(std::ostream & outs) = 0;
             virtual void input(std::istream & ins) = 0;
      
      private:
            double cost;            
              
};
#endif
in my main i use this line:
Code:
list<Transport> list1;
here is the error:

99 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_list.h cannot declare field `std::_List_node<Transport>::_M_data' to be of type `Transport'

99 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_list.h because the following virtual functions are abstract:

14 C:\Dev-Cpp\240c2\transport.h virtual void Transport::input(std::istream&)
13 C:\Dev-Cpp\240c2\transport.h virtual void Transport:utput(std:stream&)
12 C:\Dev-Cpp\240c2\transport.h virtual void Transport::calc_cost()

thanks