Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
45 / 25 / 16
Регистрация: 14.04.2011
Сообщений: 623

Как вызвать метод класса из static функции

05.02.2015, 11:57. Показов 1134. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть класс, 1 из функции которого создает поток на статичную функцию этого же класса, а эта статичная функция вызывает уже не статичную функцию, только для вызова требует объект, "this" кушать не хочет, приходится слать в аргументах при создании потока, но и так работать тоже не хочет...

C++
1
2
3
4
5
6
7
8
// Вызов static функции:
...
uMsgarg *arg = new uMsgarg();
arg->sock = newsockfd;
arg->thisobj = this;
pthread_attr_init(&this->guMsgAttribute);
pthread_attr_setdetachstate(&this->guMsgAttribute, PTHREAD_CREATE_JOINABLE);
pthread_create(&this->guMsgThread, &this->guMsgAttribute, this->OnuMsg, &arg);
C++
1
2
3
4
5
6
7
8
9
10
11
// Сама static функция:
 
void *TcpSock::OnuMsg(void *arg) // (!) Thread
{
    prctl(PR_SET_NAME,"OnuMsg",0,0,0);
    uMsgarg *args = (uMsgarg*)arg;
    LOGI("Fatal>?");
    args->thisobj->uMsg(args->sock);            // Ошибка
    LOGI("ne fatal.");
    pthread_exit(NULL);
}
В чем может быть ошибка?

Структура "uMsgarg"
C++
1
2
3
4
typedef struct {
    int sock;
    TcpSock *thisobj;
} uMsgarg;
Функция "uMsg" не вызывается, то есть ошибка не в ней.

В LogCat:
(Android)
Code
1
2
3
02-04 21:10:11.212: I/CPP-log(21783): Fatal>?
02-04 21:10:11.212: A/libc(21783): Fatal signal 11 (SIGSEGV) at 0x529a9e94 (code=1), thread 21821 (OnuMsg)
02-04 21:10:11.213: A/libc(21783): Unable to open connection to debuggerd: Connection refused
Добавлено через 15 часов 44 минуты
Нашел ошибку:
pthread_create(&this->guMsgThread, &this->guMsgAttribute, this->OnuMsg, &arg);
pthread_create(&this->guMsgThread, &this->guMsgAttribute, this->OnuMsg, arg);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.02.2015, 11:57
Ответы с готовыми решениями:

Как вызвать static метод?
Здравствуйте, есть у меня например такое: class Example { static void Main(string arg) { } } static class Ex ...

Как вызвать static метод из типа dynamic
К примеру есть класс в одной программе: namespace ConsApp_VerifyText { public class TextHelper { ///...

Как вызвать определенный метод переданного класса через метод другого класса?
Добрый день. Захотел я вызвать в методе класса метод некоего другого класса, о котором я пока не знаю. Мне пришла в голову...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.02.2015, 11:57
Помогаю со студенческими работами здесь

Как вызвать переопределить метод из дочернего класса так, чтобы выполнялись еще функции в родительском
У меня структура такова: Интерфейс IKey (Содержит void Open) public interface IKey { public void Open(); } Есть...

Как правильно вызвать метод класса внутри самого класса?
Здравствуйте. Собственно тема прописана в заголовке: как правильно вызвать метод класса внутри самого класса? Насколько я знаю, для...

Как вызвать метод класса в другом методе этого же класса?
<? class load_files{ public function traverse_hierarchy($path) { // from...

Как вызвать метод вложенного класса в методе родительского класса
Имеется родительский класс для прорисовки графики Jogj package objects; import com.jogamp.opengl.GL2; import...

Как в методе класса вызвать другой метод того же класса?
class mate { public: int AplusB(int A, int B) { return A+B; } int AplusBplusC(int A, int B, int C)


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru