Salut,
Bon je vais essayer d'être clair mai avec l'héritage c'est pas facile
précision ce code est programmer sous geany et compiler avec g++
excuser les commentaires en français mai je débute et il faut pouvoir ce relire (déjà que mon français...)

Je cherche a en-capsuler du code système fait en C dans une class.
ce code Ser a crée un trhead
le problème est le suivant. :
j'ai donc ma première classe
qui a le cheminement suivant
classe mere -->[public m_thread_create ]-->[private static m_thread_call] --->[protect virtual m_call_out_procedure]
Bon donc jusque la c'est pas compliqué (hum....)
Le problème est que le code a exécuté ce situera dans un autre fichier *. cpp il faut donc que depuis ce fichier je puisse ajouter le code a exécuté
c'est pourquoi j'ai fait cela ici avec la class B (qui donc devrai ce retrouver dans un autre fichier. cpp) et l'erreur surviens (coller a la find du code)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 
fichier .h
#ifndef DEF_PTREAD
#define DEF_PTREAD
 
#include <pthread.h>
class c_thread
{
	public:
				/*constructeur*/
				c_thread();
				/*destructeur*/
				~c_thread();
				/* methode*/
				/*creation du thread*/
				int m_thread_create();/*1 -->static void m_thread_call();*/
				/*atribut*/
	protected:
				virtual void m_call_thread(){};/*3 --> ok*/
	private:
				/*methode privée*/
				static void *m_thread_call(void *this_); /*2 --->[protect virtual m_call_thread]*/
				/*obtenir le handle cree precedament*/
				int get_handle();
				/*attribut priver*/
				pthread_t handle_;
};
class B{
	public:c_thread
	virtual void m_call_thread()
	{
		std::cout << "thread started" << std::endl;
	};
};
 
#endif //fin des macro
fichier .cpp
#include "my_class_ptrhead.h"
 
/*constructeur*/
c_thread::c_thread() {};
/*destructeur*/
c_thread::~c_thread(){};
/*creation du thread et renvoi du handle*/
int c_thread::m_thread_create()
{
		pthread_create(&handle_, 0, c_thread::m_thread_call, static_cast<void *>(this));
		return c_thread::get_handle() ;
};
 
/*obtenir le handle cree precedament*/
int c_thread::get_handle() 
{
		return handle_;
};
 
void *c_thread::m_thread_call (void *data){
	c_thread *base = static_cast<c_thread *>(data);
	base->m_call_thread();
	return 0;
};
fichier main.cpp
#include <iostream>
#include <string>
#include <cstring>
#include "my_class_ncurse.cpp"
#include "my_class_ptrhead.cpp"
 
int main()
{
	c_thread thread_p;
	int id1_H = 0;
	id1_H = thread_p.m_thread_create();
	std::cout << id1_H << std::endl;
};
 
erreur:
In file included from my_class_ptrhead.cpp:1,
                 from main.cpp:5:
my_class_ptrhead.h:28: erreur: two or more data types in declaration of ‘m_call_thread’
Merci d'avance