has incomplete type,forward declaration of ,
	
	
		Salut!:D 
En tentant de compiler ce code:
	Code:
	
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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
   | #ifndef ELECTRONIC
#define ELECTRONIC
 
#include <vector>
#include <string>
 
#ifndef BIT
typedef char BIT;
#else
#error BIT is already defined
#endif
 
 
class Component;
class ComponentPort;
class BooleanPolynom;
class BinaryOperator;
class Bit;
 
 
 
class Component{
private:
    unsigned fanIn;
    unsigned fanOut;
 
    std::string name;
 
    std::vector<ComponentPort*> inBuffer;
    std::vector<ComponentPort*> outBuffer;
 
    BooleanPolynom function;
public:
    /*Default constructor*/
    Component():fanIn(0),fanOut(0){};
    /*Binary constructor*/
    Component(unsigned _fanIn,unsigned _fanOut):fanIn(_fanIn),fanOut(_fanOut){}
 
    std::string getName(void);
    unsigned getFanIn(void);
    unsigned getFanOut(void);
};
 
 
class ComponentPort{
private:
   Component* currentComponent;
   Component* connectedComponent;
 
    Bit value;
    unsigned index;
 
public:
    Bit getValue(void);
    unsigned getIndex(void);
    Component* getCurrentComponent(void);
    Component* getConnectedComponent(void);
};
 
 
class BooleanPolynom{
private:
    bool isBit;
 
    BinaryOperator binaryOperator;
 
    BooleanPolynom* leftBooleanPolynom;
    BooleanPolynom* rightBooleanPolynom;
 
public:
    Bit evaluate(void);
};
 
Bit BooleanPolynom::evaluate(void){
 
    if(isBit){
        return (static_cast<Bit> (this))->value;
    }
 
    Bit firstOperand=leftBooleanPolynom->evaluate();
    Bit secondOperand=rightBooleanPolynom->evaluate();
 
    return binaryOperator(firstOperand,secondOperand);
 
}
 
class Bit : public BooleanPolynom{
private:
    BIT value;
public:
    Bit(BIT _value):value(_value){}
 
    BIT getValue(void);
};
 
BIT Bit::getValue(void){
    return value;
}
 
 
class BinaryOperator{
 
public:
    virtual Bit operator()(Bit b0,Bit b1)=0;
};
 
 
class AND : public BinaryOperator{
    Bit operator()(Bit b0,Bit b1){
        Bit result((b0.getValue())&(b1.getValue()));
        return result;
    }
};
#endif | 
 les erreurs pleuvent:
	Code:
	
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
   |  
32  field `function' has incomplete type 
50 field `value' has incomplete type 
65 field `binaryOperator' has incomplete type 
In member function `Bit BooleanPolynom::evaluate()': 
74 return type `struct Bit' is incomplete 
77 invalid use of undefined type `struct Bit' 
18 forward declaration of `struct Bit' 
80 variable `Bit firstOperand' has initializer but incomplete type 
80  invalid use of undefined type `struct Bit' 
18  forward declaration of `struct Bit' 
81 variable `Bit secondOperand' has initializer but incomplete type 
81  invalid use of undefined type `struct Bit' 
18 forward declaration of `struct Bit' 
83 `binaryOperator' undeclared (first use this function)  | 
 Beaucoup semble étranges:
-les "incomplete type" alors que les classes sont définies.
-les "forward declaration" alors que ce ne sont que des déclarations.
Merci de votre aide.:D