Форум программистов, компьютерный форум CyberForum.ru

Доступ из статической функции к не стачисеским переменным - C++

Восстановить пароль Регистрация
 
djoni-kga
4 / 4 / 0
Регистрация: 11.11.2008
Сообщений: 66
03.05.2011, 14:46     Доступ из статической функции к не стачисеским переменным #1
Добрый день!

Имеется класс со статической функцией, как получить доступ, из это функции к не статичным переменным. Что то типа этого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class MyClass
{
public:
  int Val1;
  int Val2;
  static void Test();
};
 
void MyCalss::Test()
{
  Val1++;
  Val2++;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2011, 14:46     Доступ из статической функции к не стачисеским переменным
Посмотрите здесь:

Доступ к статической переменной-члену C++
C++ Доступ к переменным класса
Доступ к переменным C++
C++ Обращение к статической функции класса
C++ Функции с переменным числом параметров
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
03.05.2011, 14:48     Доступ из статической функции к не стачисеским переменным #2
Пока не создано ни одного объекта, полей не существует.
djoni-kga
4 / 4 / 0
Регистрация: 11.11.2008
Сообщений: 66
03.05.2011, 16:37  [ТС]     Доступ из статической функции к не стачисеским переменным #3
на самом деле это класс диалогового окна. Там есть статическая функция, её вызывает контрол CListCtrl по событию, вот от туда надо добраться до переменный, класса.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
03.05.2011, 16:44     Доступ из статической функции к не стачисеским переменным #4
Статический метод можно вызывать для класса и для объекта:
C++
1
2
TClass::method();
object.metod()
Смотря, что требуется.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
03.05.2011, 16:56     Доступ из статической функции к не стачисеским переменным #5
ValeryLaptev, Ну да. Вот только this статическая функция все же не принимает следовательно достать парамы анриал, кроме передачи объекта/указателя в параметрах.
djoni-kga
4 / 4 / 0
Регистрация: 11.11.2008
Сообщений: 66
03.05.2011, 17:05  [ТС]     Доступ из статической функции к не стачисеским переменным #6
хорошо, а можно примерчик
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
03.05.2011, 17:09     Доступ из статической функции к не стачисеским переменным #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
struct SomeClass
{
     static void some_function(SomeClass* pOb);
     int val1;
     int val2;
};
 
void SomeClass::some_function(SomeClass* pOb)
{
    ++pOb->val1;
    ++pOb->val2;
}
 
int main()
{
    SomeClass* Object = new SomeClass;
    std::cout << Object->val1 << ' ' << Object->val2 << '\n';
    SomeClass::some_function(Object);
    std::cout << Object->val1 << ' ' << Object->val2 << '\n';
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2011, 17:16     Доступ из статической функции к не стачисеским переменным
Еще ссылки по теме:

Прямой доступ к переменным C++
C++ Возможно ли обращение к статической памяти функции извне?
Доступ к переменным в DLL программе из внешних програм C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
djoni-kga
4 / 4 / 0
Регистрация: 11.11.2008
Сообщений: 66
03.05.2011, 17:16  [ТС]     Доступ из статической функции к не стачисеским переменным #8
спасибо за пример, а такой вариант сойдет?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
typedef BOOL (*MYCALLBACK)(LPVOID lpParameter);
class CMygDlg : public CDialog
{
public:
  int m_Count;  // переменная до которой надо добраться
  void SetCallBack(MYCALLBACK pFun, LPVOID lpParameter)
  static BOOL TestCallBack(LPVOID lpParameter); // функция которую вызывает CListCtrl по событию
};
 
BOOL CMygDlg::OnInitDialog()
{
  SetCallBack(&CMygDlg::TestCallBack, (LPVOID)this);
}
 
BOOL CMygDlg::TestCallBack(LPVOID lpParameter)
{
  CMygDlg* pThis = static_cast<CMygDlg*>(lpParameter);
 
  // как добраться до переменной, так?
  pThis->m_Count++;
}
Добавлено через 55 секунд
все действия в диалоговом окне.
Yandex
Объявления
03.05.2011, 17:16     Доступ из статической функции к не стачисеским переменным
Ответ Создать тему
Опции темы

Текущее время: 09:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru