build->clean, négatif.
so:




A.h#ifndef A_H
#define A_H
#include "EU.h"
#include "STU.h"
#include "AT.h"
class EU;
class STU;
class AT;
//generic class for
class A{
public:
A();
~A();
virtual bool createAT(EUr* eu, STU* stu);
virtual bool freeAT(EU* eu, STU* stu);
virtual AT* find(EU* eu, STU* stu);
};
#endif //A_H




A.cpp#include "A.h"
A::A(){}
A::~A(){}
bool A::createAT(EU* eu, STU* stu){
return false;}
bool A::freeAT(EU* eu, STU* stu){
return false;}
AT* A::find(EU* eu, STU* stu){
return NULL;}




R.h#ifndef R_H
#define R_H
#include "A.h"
#include <qptrlist.h>
#include "AT.h"
class A;
class AT;
class EU;
class R: public QObject,public A,QPtrList <AT>{
Q_OBJECT
public:
R();
~R();
bool createAT(EU* eu, STU* stu);
bool freeAT(EU* eu, STU* stu);
AT* find(EU* eu, STU* stu);
};
#endif//R_H




R.cpp#include "R.h"
R::R(){
setAutoDelete(true);}
R::~R(){}
bool R::createAT(EU* eu,STU* stu){
if((eu->name!=NULL)&&((eu->name!=NULL)){
AT *at0 = new AT(eu,stu)
append(at0);
return true;}
else return false}
bool R::freeAT(EU* eu, STU* stu){
AT* at0=0;
for(uint i=0;i<count();i++){
at0=at(i);
if(at0->eu->name=eu->name)&&(at0->stu->name=stu->name){
remove(at0);
return true;}
return false;}
AT* R::find(EU* eu, STU* stu){
AT* at0=0;
for(uint i=0;i<count();i++){
at0=at(i);
if(at0->eu->name=eu->name)&&(at0->stu->name=stu->name)
return at0;
return NULL;}





Voilà
Pour le moment, les classes EU et STU n'ont pour variables chacune qu'un QString, et la classe AT n'a elle qu'un EU et un STU.
