bonjour
dans un projet de traitement d'image j'ai trouver cette syntaxe pour faire un traitement pas enchainement
j ai pas compris cette syntaxeCode:Virtual IplImage *operator () (IplImage* source)= 0
si quelqu'un peut m expliquer
Version imprimable
bonjour
dans un projet de traitement d'image j'ai trouver cette syntaxe pour faire un traitement pas enchainement
j ai pas compris cette syntaxeCode:Virtual IplImage *operator () (IplImage* source)= 0
si quelqu'un peut m expliquer
Bonjour,
apparemment c'est une surcharge d'opérateur virtuelle pure.
Ensuite je laisse répondre les experts sur le pourquoi du comment. Est-ce que c'est bien valide ? Une bonne solution ?
Salut,
Si tu ne sais pas ce que c'est, commence par regarder ces sujets dans les FAQs et les Tutos, tu y trouveras de précieux renseignements : héritage, polymorphisme puis fonctions virtuelles pures et classes abstraites.
Amuses toi bien...
Exemple:
Pour le reste: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 class A { public: A(const int a): s(a) {} virtual int operator ()(const int a) = 0; protected: int s; }; class B: public A { public: B(const int b): A(b) {} virtual int operator ()(const int b) { return this->s + b; } }; class C: public A { public: C(const int c): A(c) {} virtual int operator ()(const int c) { return this->s * c; } }; int main () { A *a1 = new B(3), *a2 = new C(3); cout<<"a1(5): "<<(*a1)(5)<<endl; // -> a1(5): 8 cout<<"a2(5): "<<(*a2)(5)<<endl; // -> a2(5): 15 // Ou B b(3); C c(3); cout<<"b(5): "<<b(5)<<endl; // -> b(5): 8 cout<<"c(5): "<<c(5)<<endl; // -> c(5): 15 return 0; }
Citation:
... commence par regarder ces sujets dans les FAQs et les tutos : héritage, polymorphisme puis classes abstraites.