C++ - 我如何从类的构造函数初始化一个单独的类的构造函数?
问题描述:
基本上我想实现是班上geneticAlgorithm
C++ - 我如何从类的构造函数初始化一个单独的类的构造函数?
创建类deltaKinematics
的地方(私人)实例在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";
}
我该如何去初始化本地实例呢?
答
成员初始化列表:
GeneticAlgorithm::GeneticAlgorithm() : deltaRobot(100) {
}
答
GeneticAlgorithm::GeneticAlgorithm() : deltaRobot(100) {
cout << "Genetic Algorithmic search class initiated \n";
}
注意:
构造函数名后:它是类的成员变量的数据初始化序列的开始。它们显示为对其构造函数的调用,并带有要传递的参数,并且应该与声明的顺序相同。
谢谢@Erik多数民众赞成在我之后。出于兴趣,该语言结构的名称是什么?我对C++很陌生,但仍然掌握了一些术语 – 2011-05-19 07:26:20
这是一个成员初始化列表,用于初始化基类和成员变量。请注意,它们将按顺序调用成员变量*声明*,而不是按照您指定的顺序。你可以像这样初始化多个成员:'Foo :: Foo():BaseClass(0),MemVar(1),AnotherMemVar(2){}' – Erik 2011-05-19 07:28:07
如果100不是一个常量而是一个变量所需的某些逻辑在传递给构造函数之前进行计算 – Alexander 2014-01-01 22:18:24