создать статический вид счетчика классов в C ++ (пример Java) - PullRequest
0 голосов
/ 26 февраля 2012

вот фрагмент кода в Java:

class C {

    private static int c = 0;

    C(){ c++; }

    public static int getC () { return c; }
}

public class TestC {

    public static void main (...) {

        C c1 = new C();
        C c2 = new C();

        // at this point C.getC() returns 2(int)
    }
}

Теперь я хочу сделать что-то подобное в C ++, у меня есть базовое понимание написания классов, какой должен быть кратчайший фрагмент кода для реализации счетчика?

вот мой пример класса:

class C {

    public:


    private:
}

int main () {

    C c1;
    C c2;

    // printing the counter like C.getC();
}

Ответы [ 2 ]

4 голосов
/ 26 февраля 2012

Очень похоже.

В соответствующем заголовке:

class C {   
    private:
         static int c;  // Declaration of c.
    public:
         C(){ c++; }
         static int getC () { return c; }
};

В один .cpp файл:

int C::c = 0;  // Definition of c.

Это важно дляпредоставьте определение для c точно в одном месте (т.е. не в заголовке), иначе вы получите ошибки компоновки.

1 голос
/ 26 февраля 2012
class user
{
  private:
  int id;
  static int next_id;

  public:
  static int getCount()
  {    
    return next_id;
  }
  /* More stuff for the class user */
  user()
  {
    id = user::next_id++; //
  }
};
int user::next_id = 0;

по этой ссылке http://www.cprogramming.com/tutorial/statickeyword.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...