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