0
01 class Flugzeug {
02 private:
03 const unsigned int nr;
04 unsigned int sitze;
05 static int serienNr;
06 public:
07 Flugzeug(unsigned int sitze);
08 static int getSerienNr();
09 };
10
11 static int serienNr = 4700;
12
13 Flugzeug::Flugzeug(unsigned int sitze) {
14
15 this->sitze = sitze;
16 }
17 static int getSerienNr(){
18 return serienNr++;
19 }
我们必须初始化成员“nr”。 如果我把在构造函数的初始值设定项列表中调用静态属性或函数
14 this->nr = serienNr++;
它会告诉我说:
13 error: uninitialized member 'Flugzeug::nr' with 'const' type 'const unsigned int'
14 error: assignment of read-only member 'Flugzeug::nr'
好吧,我在初始化列表来初始化呢? 所以我把
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(serienNr++) {
,它会告诉我:
13 undefined reference to 'Flugzeug::serienNr'
我想所有的人:
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(serienNr++) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(getSerienNr()) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(Flugzeug::serienNr) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(Flugzeug->serienNr) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(Flugzeug.serienNr) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(this::serienNr) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(this->serienNr) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(this.serienNr) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(Flugzeug::getSerienNr()) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(Flugzeug->getSerienNr()) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(Flugzeug.getSerienNr()) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(this::getSerienNr()) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(this->getSerienNr()) {
13 Flugzeug::Flugzeug(unsigned int sitze) : nr(this.getSerienNr()) {
如何初始化const成员与静态成员或静态函数?
谢谢 - Enomine
析构函数是错误的。它应该是'delete [] typ;'而不是'delete typ;'。复制构造函数也是错误的,因为您不复制字符串,您只需指定指针。所以如果其他实例被删除,那么这个指针现在会导致未定义的行为。 – Vallentin