Objekt-array-Initialisierung, ohne Standard-Konstruktor

#include <iostream>
class Car
{
private:
  Car(){};
  int _no;
public:
  Car(int no)
  {
    _no=no;
  }
  void printNo()
  {
    std::cout<<_no<<std::endl;
  }
};
void printCarNumbers(Car *cars, int length)
{
    for(int i = 0; i<length;i++)
         std::cout<<cars[i].printNo();
}

int main()
{
  int userInput = 10;
  Car *mycars = new Car[userInput];
  for(int i =0;i < userInput;i++)
         mycars[i]=new Car[i+1];
  printCarNumbers(mycars,userInput);
  return 0;
}    

Ich möchte ein Auto erstellen array, aber ich bekomme die folgende Fehlermeldung:

cartest.cpp: In function int main()’:
cartest.cpp:5: error: Car::Car()’ is private
cartest.cpp:21: error: within this context

gibt es eine Möglichkeit, diese Initialisierung ohne Auto() Konstruktor public?

operator new [] ruft immer den default-Konstruktor. Aber C++11 hat eine Lösung, wie gezeigt, unten.

InformationsquelleAutor Dan Paradox | 2011-01-21

Schreibe einen Kommentar