Статистическая функция класса
От: vvs86 Великобритания  
Дата: 22.11.02 18:18
Оценка:
Мне нужно чтобы статистическая функция класса общалась с членами того же класса (переменными). Так просто — компилятор плюётся (мол не допущу доступа из статистической функции ). А ставлю переменные в static компилятор говорит что не может найти ету переменную при коипоновке (external not found) Неуж-то единственный способ передать переменную параметром

PS Это мне для работы с потоком надо
Re: Статистическая функция класса
От: Ivan Россия www.rsdn.ru
Дата: 22.11.02 18:22
Оценка:
Здравствуйте, vvs86, Вы писали:

в h файле
class C
{
public:
private:
   static void SomeProc();

   static bool s_b;
}

в cpp
bool C::s_b = false; // начальное значение

void C::SomeProc()
{
    s_b = true;
}


Другой способ — передать this в статический метод через параметр и использовать обычные переменные-члены класса.
Re: Статистическая функция класса
От: PPA Россия http://flylinkdc.blogspot.com/
Дата: 22.11.02 18:26
Оценка:
Здравствуйте, vvs86, Вы писали:

А ставлю переменные в static компилятор говорит что не может найти ету переменную при коипоновке (external not found)

Линкеру нужно такое:

f.hpp:

class TLockTraceTree
{
static int m_count;
public:
......

f.cpp:

int TLockTraceTree::m_count = 0;

Неуж-то единственный способ передать переменную параметром
Re: Какая-какая функция?
От: Dr_Sh0ck Беларусь  
Дата: 23.11.02 05:42
Оценка: 5 (1)
Здравствуйте, vvs86, Вы писали:

V>Мне нужно чтобы статистическая функция класса общалась с членами того же класса (переменными).


[]

А что ето за функция такая, если не секрет, — СТАТИСТИЧЕСКАЯ
Do not fake yourself ;)
ICQ#: 198114726
Re: Статистическая функция класса
От: Billy Bons  
Дата: 23.11.02 05:49
Оценка:
Неужто...
Re[2]: Какая-какая функция?
От: Awaken Украина  
Дата: 23.11.02 21:48
Оценка:
Здравствуйте, Dr_Sh0ck, Вы писали:

DS>Здравствуйте, vvs86, Вы писали:


V>>Мне нужно чтобы статистическая функция класса общалась с членами того же класса (переменными).


DS>[]


DS>А что ето за функция такая, если не секрет, — СТАТИСТИЧЕСКАЯ


может он ей мат. ожидание или дисперсию рассчитывает
Re: Статистическая функция класса
От: Анатолий Широков СССР  
Дата: 24.11.02 21:37
Оценка: 10 (1)
Рассмотрим возможный С код (foo.c), полученный путем трансляции следующего С++ кода (foo.cpp) неким абстрактным компилятором.
// foo.cpp
class foo
{
public:
   void member()
   {
       _member = 100;
   }

   void static_member()
   {
      // _member = 100; 
   }
private:
   int _member;
};

int main()
{
   foo f;
   foo::static_member();
   f.static_member(); 
   f.member(); 
   return 0;
}


/* 
   foo.c
*/
typedef struct
{
  int _member;
} foo;

/*
  кодогенерация для foo::member
*/
void foo__member(this)
foo *this;
{
   this->_member = 100; 
}
/*
  кодогенерация для foo::static_member
  !!!обращаю внимание, что никакого this-a здесь нет - нет адреса объекта
*/
void foo__static_member(void)
{
   /* ???->_member = 100; чему присваивать? */
}

void main()
{
   /* foo f;*/
   foo f;
   /* foo::static_member();*/
   foo__static_member();
   /* f.static_member(); */
   foo__static_member();
   /* f.member(); */
   foo__member(&f);
   return 0;
};


Надеюсь, что данный пример помог понять почему из статической функции нельзя получить доступ к не статических членам класса или структуры.
Re[2]: Статистическая функция класса
От: Fiend  
Дата: 25.11.02 11:27
Оценка:
Помимо того, что ты переменные статическими в классе объявил, их еще и определить надо.
Re: Статистическая функция класса
От: slonnik  
Дата: 25.11.02 12:27
Оценка:
Здравствуйте, vvs86, Вы писали:

V>Мне нужно чтобы статистическая функция класса общалась с членами того же класса (переменными). Так просто — компилятор плюётся (мол не допущу доступа из статистической функции ). А ставлю переменные в static компилятор говорит что не может найти ету переменную при коипоновке (external not found) Неуж-то единственный способ передать переменную параметром


V>PS Это мне для работы с потоком надо


Обычно при создании потока, когда в качестве указателя передается адресс статического метода класса, передается также указатель на класс this и через него ты достукиваешься до всех членов класса, неважно protected или public
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.