[C#] Problème de surcharge [RESOLU]

Problème de surcharge [RESOLU] [C#] - C#/.NET managed - Programmation

Marsh Posté le 24-03-2005 à 11:58:43    

salut tous,
 
j'ai un soucis sous visual studio .net
J'ai une classe Releve avec une méthode  
public string GetNomFichier() {}
Je veux la surcharger dans la classe saisie qui en hérite.
Donc, je mets  
public override string GetNomFichier() {}
 
Pourquoi visual me mets : "D:\SIG_RT\Noyau\Saisie.cs(21): 'SIG_RT.Saisie.GetNomFichier()' : ne peut pas substituer le membre hérité 'SIG_RT.Releve.GetNomFichier()', car il n'est pas marqué comme virtual, abstract ni override" ???


Message édité par Fraisouille le 24-03-2005 à 12:32:03
Reply

Marsh Posté le 24-03-2005 à 11:58:43   

Reply

Marsh Posté le 24-03-2005 à 12:06:38    

Faut déclarer la première méthode différemment :

public virtual string GetNomFichier() {}

Reply

Marsh Posté le 24-03-2005 à 12:06:54    

Si toutefois "virtual" est l'équivalent de "overridable" en vb.net

Reply

Marsh Posté le 24-03-2005 à 12:09:07    

public virtual string GetNomFichier() {}
 
 
c'est pas correct.
 
 
virtual déclares la possibilité de surcharge

Reply

Marsh Posté le 24-03-2005 à 12:13:07    

en gros, faut que le lui dise que ma méthode GetNomFichier a le droit d'être surchargée dans ses classes filles, c'est ça ?

Reply

Marsh Posté le 24-03-2005 à 12:13:25    

Voilà :)

Reply

Marsh Posté le 24-03-2005 à 12:14:08    

ben je sais pas ce que tu veux faire. si tu veux faire du virtual abstract, ben fais le. Ou fais une interface.
 
 
ET PUIS LES GET CA PUE ON EN FAIT PAS EN C#

Reply

Marsh Posté le 24-03-2005 à 12:14:37    

Taz a écrit :

public virtual string GetNomFichier() {}
 
 
c'est pas correct.
 
 
virtual déclares la possibilité de surcharge


Ben oui, et du coup la méthode qui surcharge doit être en override :??:

Reply

Marsh Posté le 24-03-2005 à 12:14:38    

FlorentG a écrit :

Faut déclarer la première méthode différemment :

public virtual string GetNomFichier() {}



 
Gagné ! Merci les gars

Reply

Marsh Posté le 24-03-2005 à 12:14:57    

Taz a écrit :

ben je sais pas ce que tu veux faire. si tu veux faire du virtual abstract, ben fais le. Ou fais une interface.
 
 
ET PUIS LES GET CA PUE ON EN FAIT PAS EN C#


lol, il devrait utiliser une propriété plutôt ;)

Reply

Marsh Posté le 24-03-2005 à 12:14:57   

Reply

Marsh Posté le 24-03-2005 à 12:15:15    

Fraisouille a écrit :

Gagné ! Merci les gars


public virtual string GetNomFichier() {}
 
perdu, ça compile pas.

Reply

Marsh Posté le 24-03-2005 à 12:16:20    

Taz a écrit :

public virtual string GetNomFichier() {}
 
perdu, ça compile pas.


Balance le message d'erreur

Reply

Marsh Posté le 24-03-2005 à 12:16:21    

Taz a écrit :

ben je sais pas ce que tu veux faire. si tu veux faire du virtual abstract, ben fais le. Ou fais une interface.
 
 
ET PUIS LES GET CA PUE ON EN FAIT PAS EN C#


 
Ouais mais je suis pas encore habitué au c# et c'est pas naturel pour moi de mettre des propriétés... La syntaxe est space... Et je suis déjà à la bourre... pas le temps de chercher :D

Reply

Marsh Posté le 24-03-2005 à 12:17:39    

FlorentG a écrit :

Balance le message d'erreur


tu te fous de moi là ?

Reply

Marsh Posté le 24-03-2005 à 12:19:37    

Taz a écrit :

tu te fous de moi là ?


Bah tu dis ça compile pas :D J'veux savoir le message :D J'ai fait que du VB.NET, alors tout ce qui touche au C# m'intéresse :) Ou alors y'a encore un truc que j'ai pas pigé :??:

Reply

Marsh Posté le 24-03-2005 à 12:20:31    

Taz a écrit :

public virtual string GetNomFichier() {}
 
perdu, ça compile pas.


 
Chez moi, ça compile :D

Reply

Marsh Posté le 24-03-2005 à 12:21:39    

Code :
  1. public abstract class Releve
  2. {
  3.   public abstract string NomFichier
  4.     {
  5.       get;
  6.     }
  7. }
  8. public class MonReleve : Releve
  9. {
  10.   public override string NomFichier
  11.     {
  12.       get { return "releve.my"; }
  13.     }
  14. }
  15. class Test
  16. {
  17.   public static void Main()
  18.     {
  19.       Releve r = new MonReleve();
  20.       System.Console.WriteLine(r.NomFichier);
  21.     }
  22. }


Message édité par Taz le 24-03-2005 à 12:21:55
Reply

Marsh Posté le 24-03-2005 à 12:22:35    

Mais sa classe de base n'est pas abstraite, non ?


Message édité par FlorentG le 24-03-2005 à 12:22:43
Reply

Marsh Posté le 24-03-2005 à 12:22:36    

Fraisouille a écrit :

Chez moi, ça compile :D


parce que t'as un compilateur de merde. Je vois pas comment il pourrait accepter que tu ne retournes rien dans une fonction retournant une string

Reply

Marsh Posté le 24-03-2005 à 12:25:25    

J'ai pas marqué le code entre les accolades mais y'en a... Et ma classe n'est pas abstraite. Je compile avec Visual Studio alors niveau compilateur, ça va, c'est pas trop pourri :D

Reply

Marsh Posté le 24-03-2005 à 13:51:20    

FlorentG a écrit :

Mais sa classe de base n'est pas abstraite, non ?


ben je sais pas, vous savez pas vous exprimer ...

Reply

Marsh Posté le 24-03-2005 à 13:53:45    

ben il est pourri c'est tout.
 
string f() { } c'est pas correct .|
 
si ta classe de base est pas abtraite alors il te faut
 

Code :
  1. public class Releve
  2. {
  3.   public virtual string NomFichier
  4.     {
  5.       get { return "releve"; }
  6.     }
  7. }
  8. public class MonReleve : Releve
  9. {
  10.   public override string NomFichier
  11.     {
  12.       get { return "releve.my"; }
  13.     }
  14. }
  15. class Test
  16. {
  17.   public static void Main()
  18.     {
  19.       Releve r = new MonReleve();
  20.       System.Console.WriteLine(r.NomFichier);
  21.     }
  22. }

Reply

Marsh Posté le 24-03-2005 à 14:16:17    

J'ai pas voulu encombrer le forum avec le code de mes méthodes. Pis mon problème est déjà résolu... Faut pas t'exciter comme ça...
Merci quand même

Reply

Marsh Posté le 24-03-2005 à 14:17:20    

ben alors sois précis !
Mais t'inquiète, je prendrais plus la peine de te faire des exemples

Reply

Marsh Posté le 24-03-2005 à 14:21:32    

Ben attends, c'est toi qui est borné... Si je te dis que mon problème est résolu, c'est pas la peine de faire le super programmeur qui a la science infuse et qui sait tout et qui décrète que Visual Studio est un compilateur pourri... Faut arrêter de sa le péter un peu...

Reply

Marsh Posté le 24-03-2005 à 14:23:17    

ben un truc qui permet  
 
string f() { }
 
 
est pourri et dangereux, c'est tout.

Reply

Marsh Posté le 24-03-2005 à 14:24:03    

mais je te dis qu'il y a du code dans mes méthodes mais que je ne voyais pas l'intérêt de tout recopier sur le forum... Tu le fais exprès ?

Reply

Marsh Posté le 24-03-2005 à 14:26:56    

Taz a écrit :

public virtual string GetNomFichier() {}
 
perdu, ça compile pas.


 
Chez moi, ça compile :D

Reply

Marsh Posté le 24-03-2005 à 14:29:53    

Je me répète : "mais je te dis qu'il y a du code dans mes méthodes mais que je ne voyais pas l'intérêt de tout recopier sur le forum... Tu le fais exprès ?"

Reply

Marsh Posté le 04-04-2005 à 09:24:19    

Taz a écrit :

Chez moi, ça compile :D


 
Faudrait savoir :o

Reply

Marsh Posté le 04-04-2005 à 12:56:25    

Il a merdé son quote de Fraisouille.  [:spamafote]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 04-04-2005 à 17:51:37    

Et il a toujours pas compris que dans mes méthodes, y'a du code mais que j'ai pas voulu faire un post de 3 kms de long...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed