C ++ - Как я могу инициализировать конструктор отдельного класса от конструктора класса? - PullRequest
7 голосов
/ 19 мая 2011

В основном я пытаюсь создать локальный (и частный) экземпляр класса deltaKinematics в классе geneticAlgorithm

В файле geneticAlgorithm.h, который у меня есть:

class DeltaKinematics; //class is defined in separate linked files

class GeneticAlgorithm {
  //private  
    DeltaKinematics deltaRobot;

public:

    GeneticAlgorithm(); //constructor

};

Это все нормально, но когда я собираюсь объявить конструктор GeneticAlgorithm, я не могу понять, как создать экземпляр DeltaKinematics

Это geneticAlgorithm.cppКонструктор:

GeneticAlgorithm::GeneticAlgorithm(){ //The error given on this line is "constructor for 'GeneticAlgorithm' must explicitly initialize the member 'deltaRobot' which does not have a default constructor"

    DeltaKinematics deltaRobot(100); //this clearly isn't doing the trick

    cout << "Genetic Algorithmic search class initiated \n";
}

Как мне инициализировать этот локальный экземпляр?

Ответы [ 2 ]

13 голосов
/ 19 мая 2011

Список инициализаторов членов:

GeneticAlgorithm::GeneticAlgorithm() : deltaRobot(100) {
}
3 голосов
/ 19 мая 2011
GeneticAlgorithm::GeneticAlgorithm() : deltaRobot(100) {
    cout << "Genetic Algorithmic search class initiated \n";
}

Обратите внимание на : после имени конструктора: это начало последовательности инициализации для переменных данных члена класса.Они появляются как вызовы своих конструкторов с параметрами, которые вы хотите передать, и должны быть в том же порядке, в котором они объявлены.

...