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