【发布时间】:2016-11-27 22:01:51
【问题描述】:
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
【问题讨论】:
标签: function static initialization constants member