Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с класами 
V
    Опции темы
NOCaut
Дата 22.7.2011, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 5.12.2008

Репутация: нет
Всего: 0



у меня есть клас CBand и вункция вне класа runThread. Как визвать в етой функцию функцию класа?

void runThread(LPVOID args)
{
  CBandToolBarCtrl::Navigate(L""); // - >регаеться что недопустимый вызов нестатической функции-члена
}

PM MAIL   Вверх
newbieone
Дата 22.7.2011, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.3.2010

Репутация: 1
Всего: 1



может, так?
Код

void runThread(LPVOID args, CBand &object)
{
  object.navigate(arguments)
}

в общем, нестатические функции-члены должны вызываться по отношению к какому-то объекту. на то они и нестатические.

Это сообщение отредактировал(а) newbieone - 22.7.2011, 14:39
PM MAIL   Вверх
JЕT
Дата 22.7.2011, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 30.9.2010

Репутация: нет
Всего: нет



Либо сделайте эту функци статической, либо обьявите объек тласса CBand.

Пример 1:

Код

#include <iostream>

class MyClass {
public:
    void foo() const
    {
        std::cout << "MyClass::foo()\n";
    }
};

void my_function() 
{
    MyClass object;
    object.foo();
}

int main()
{
    my_function();

    return 0;
}


Пример 2:

Код

#include <iostream>

class MyClass {
public:
    static void foo()
    {
        std::cout << "MyClass::foo()\n";
    }
};

void my_function() 
{
    MyClass::foo();
}

int main()
{
    my_function();

    return 0;
}


PM MAIL   Вверх
NOCaut
Дата 22.7.2011, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 5.12.2008

Репутация: нет
Всего: 0



после создание object нужно чистить память за соболй?

Добавлено через 3 минуты и 13 секунд
У меня public секция что за ерор?

error: спецификатор 'static' не должен использоваться для функций-членов с областью видимости в пределах файла
PM MAIL   Вверх
bsa
Дата 22.7.2011, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



NOCaut, код покажи
PM   Вверх
NOCaut
Дата 22.7.2011, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 5.12.2008

Репутация: нет
Всего: 0



// h file
class CBandToolBarCtrl : public CWindowImpl<CBandToolBarCtrl, CToolBarCtrl>
{
public:
static  void Navigate(CString url);

.....

// cpp file
static void CBandToolBarCtrl::Navigate(CString url) 
{

}


PM MAIL   Вверх
JЕT
Дата 22.7.2011, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 30.9.2010

Репутация: нет
Всего: нет



Уберите клчевое слово static из реализации функции.

Добавлено через 36 секунд
То есть сделайте просто

Код

void CBandToolBarCtrl::Navigate(CString url) 
{

}

PM MAIL   Вверх
NOCaut
Дата 22.7.2011, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 5.12.2008

Репутация: нет
Всего: 0



нащол что не так Но тепер с етой функции я не вижу переменние класа

Это сообщение отредактировал(а) NOCaut - 22.7.2011, 15:04
PM MAIL   Вверх
JЕT
Дата 22.7.2011, 15:07 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 30.9.2010

Репутация: нет
Всего: нет



Цитата

Но тепер с етой функции я не вижу переменние класа


Скорее всего переменные в классе обьявлены со специикатором доступа private.
Создайте get и set функции для доступа к этим переменным.
PM MAIL   Вверх
NOCaut
Дата 22.7.2011, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 5.12.2008

Репутация: нет
Всего: 0



Рахобрался

Это сообщение отредактировал(а) NOCaut - 22.7.2011, 16:53
PM MAIL   Вверх
bsa
Дата 22.7.2011, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(JЕT @  22.7.2011,  15:07 Найти цитируемый пост)
Скорее всего переменные в классе обьявлены со специикатором доступа private.

вообще-то, статические методы класса НЕ ИМЕЮТ прямого доступа к НЕ СТАТИЧЕСКИМ членам класса без указания объекта.
PM   Вверх
JЕT
Дата 22.7.2011, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 30.9.2010

Репутация: нет
Всего: нет



Да, вы правы. Перепутал немного.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1204 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.