LINUX.ORG.RU

Статические функции члены в С++


0

0

При попытки объявить нечто вроде:
class PThread {
...
static int Pthread_create(pthread_t*, const pthread_attr_t*, void*(*)(void*), void*);
};

получаю такое:
error: cannot declare member function ‘static int pix::PThread::Pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)’ to have static linkage

Компилирую командой:
g++ -fPIC -D_HAS_LINUX_ -D_DEBUG_ -c -o thread.o thread.cc

Вопрос простой и глупый: а посему так незя?

Code:

#include <cstdio>

typedef struct{
} pthread_t;

typedef struct{
} pthread_attr_t;

class PThread {
public:
        static int Pthread_create(pthread_t*, const pthread_attr_t*, void*(*)(void*), void*);
};

int PThread::Pthread_create(pthread_t*, const pthread_attr_t*, void*(*)(void*), void*) {
        return 666;
}

int main() {
        std::printf("%i\n", PThread::Pthread_create(0, 0, 0, 0));
        return 0;
}

Compile&Run:

absurd@karlstein:~/BoZo$ g++ ./BoZo.cc -Wall -o BoZo
absurd@karlstein:~/BoZo$ ./BoZo 
666 

Absurd ★★★
()
Ответ на: комментарий от dilmah

Ругается именно на объявление static функции в классе. Отмечу так же что все pthread... это структуры из POSIX thread library.

mskmsk1985
() автор топика

Вопрос простой и глупый: у вас нестатических членов в теле функции нет?

Conficker
()
Ответ на: комментарий от const86

Все нашел! По балде static не только в объявлении но и в определении было указано что не есть тру... поздно однако.

mskmsk1985
() автор топика
Ответ на: комментарий от MiracleMan

Спасибо конечно, но нашел-то все равно сам.

mskmsk1985
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.