Как получить доступ к переменным класса в C ++ - PullRequest
3 голосов
/ 16 августа 2011

Возможно ли в c ++ доступ к переменным класса в других классах без создания объекта. Я пытался использовать статические, но другой класс не распознает мою переменную. У меня есть 3 класса. В двух из них должны использоваться переменные sae. В третьем классе я меняю значения. Был бы признателен, если бы вы могли помочь. Может быть, у вас есть пример.

Ответы [ 3 ]

3 голосов
/ 16 августа 2011
class Myclass
{

    public:
         static int i;
};

int Myclass::i = 10;


class YourClass
{

    public:
        void doSomething()
        {
             Myclass::i = 10;  //This is how you access static member variables
        }

};

int main()
{
    YourClass obj;
    obj.doSomething();
    return 0;
}
3 голосов
/ 16 августа 2011

static является правильным ключевым словом здесь:

class A {
public:
  static int i; // <-- this is a class variable
};

class B {
public:
  void f() { A::i = 3; } // <-- this is how you access class variables
};

Единственная потенциальная проблема, о которой я могу думать, это то, что

  1. Вы сделали переменную класса protected или private, что делает его недоступным из другого кода.
  2. Вы забыли указать полную область видимости переменной класса (с A:: в этом примере).
0 голосов
/ 16 августа 2011

Я думаю, что Singleton Pattern поможет, но я не большой поклонник этого. Намного лучше было бы, чтобы один класс стал владельцем объекта и передавал ссылки на этот объект другим классам.

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