Je me demandais si une méthode d’extension C # de certaines classes pouvait servir d’implémentation d’interface? Qu’est-ce que j’ai: Une iterface: public interface IEventHandler { void Notify(SEvent ev, IEventEmmiter source); } Une classe qui l’implémente: class Sim : IEventHandler { /*public void Notify(SEvent ev, IEventEmmiter source) { Console.WriteLine(“Got notified: ” + ev.Name); }*/ } Et […]
Un collègue et moi discutons un peu de l’inheritance multiple. Je dis que ce n’est pas supporté et il dit que c’est le cas. Donc, j’ai pensé que je demanderais à la bande cérébrale sur le net.
L’extrait de code suivant génère une erreur “appel à un appel ambigu” lors de la compilation, et j’aimerais savoir s’il existe un moyen de contourner ce problème sans qualifier complètement l’appel à foo: #include struct Base1{ void foo(int){ } }; struct Base2{ void foo(float){ } }; struct Derived : public Base1, public Base2{ }; int […]
Il est légal de le faire en Java: void spew(Appendable x) { x.append(“Bleah!\n”); } Comment puis-je le faire (syntaxe non légale): void spew(Appendable & Closeable x) { x.append(“Bleah!\n”); if (timeToClose()) x.close(); } Je voudrais, si possible, forcer les appelants à utiliser des objects à la fois annexables et fermables, sans nécessiter de type spécifique. Il […]
http://en.wikipedia.org/wiki/Diamond_problem Je sais ce que cela signifie, mais quelles mesures puis-je prendre pour l’éviter?
Un court exemple produit un résultat étrange! #include using namespace std; struct A { int a; }; struct B { int b; }; struct C : A, B { int c; }; int main() { C* c = new C; B* b = c; cout << "The address of b is 0x" << hex << […]
Je sais que l’inheritance multiple n’est pas autorisé dans Java et C #. Beaucoup de livres disent simplement que l’inheritance multiple n’est pas autorisé. Mais il peut être implémenté en utilisant des interfaces. Rien n’est discuté pour savoir pourquoi il n’est pas autorisé. Quelqu’un peut-il me dire précisément pourquoi ce n’est pas autorisé?
Quelle est la différence entre Mixins et Traits? Selon Wikipedia , les modules Ruby sont en quelque sorte des traits similaires. Comment?
J’ai une interface générique public interface Consumer { public void consume(E e); } J’ai une classe qui utilise deux types d’objects, donc j’aimerais faire quelque chose comme: public class TwoTypesConsumer implements Consumer, Consumer { public void consume(Tomato t) { ….. } public void consume(Apple a) { …… } } Apparemment je ne peux pas faire […]
Comme l’inheritance multiple est mauvais (cela rend la source plus compliquée), C # ne fournit pas un tel modèle directement. Mais parfois, il serait utile d’avoir cette capacité. Par exemple, je peux implémenter le modèle d’inheritance multiple manquant à l’aide d’interfaces et de trois classes comme celles-ci: public interface IFirst { void FirstMethod(); } public […]