Dlaczego kompilator nie chce mi nadpisać metody?

0

Nie wrzucam całego kodu, bo po pierwsze jest go od groma a po drugie błędy pojawiły się dopiero wtedy, gdy zacząłem stosować dziedziczenie klas. Wcześniej już mi wszystko hulało. Error się pojawił dopiero przy końcowej modyfikacji kodu.
Treść błędu: cannot overrite inheritet member.

Będę pisał symbolami dla zwiększenie czytelności mojego problemu:
Nie rozumiem dlaczego wyskakuje mi powyższy error, gdy piszę tak:

public class Klasa
{
     public void metoda(){}
      public class klasa_potomna : Klasa
     {
            public override void metoda(){}
     }
}
 

Krzyczy mi, że nie może nadpisać metody metoda(){}. Czy wiecie może czemu? Jak ten kod powinienem poprzestawiać, aby error zniknął.

1

a jak wygląda deklaracja metoda w klasie bazowej i do kur*y nędzy KOMPILATOR NIE KRZYCZY TYLKO INFORMUJE CO JEST NIE TAK I TĄ INFORMACJE NALEŻY PRZEDE WSZYSTKIM TUTAJ WKLEIĆ!!!!

0

Abrakadaber, spokojnie;-) Nie irytuj się tak od razu.

  1. Pełna informacja od kompilatora jest taka:
"Error	1	'losowanie_figur.bs_losowanie_figur.bs_Punkt.bs_Prostokat.narysuj()': cannot override inherited member 'losowanie_figur.bs_losowanie_figur.bs_Punkt.narysuj()' because it is not marked virtual, abstract, or override"

2.Nie rozumiem o co ci chodzi? Przecież wszystko opisałem. Deklaracja metody narysuj() wygląda tak, jak opisałem to w symbolicznym kodzie.
Owszem. Raz zmieniłem ją na:

public override void narysuj(){};

ale error nie zniknął. Waśnie dlatego nie wiem o co chodzi.

dodanie znacznika <code class="none"> - @furious programming

1

because it is not marked virtual, abstract, or override
W klasie bazowej musisz oznaczyć metodą jako virtual aby dało się ją nadpisać.

http://www.cezarywalenciuk.pl/post/2011/06/28/Kurs-Obiektowosc-w-C-Metody-i-dziedziczenie-12.aspx

0

Tzn. do tego akurat już doszedłem, ale niestety... kod zrobiłem na taki:

public class klasa
{
     public virtual void narysuj(){}
     public class klasa_potomna:klasa
     {
          public override void narysuj(){}
      }
}
 

a error dalej się pojawia.

Zellus napisał(a):

because it is not marked virtual, abstract, or override
W klasie bazowej musisz oznaczyć metodą jako virtual aby dało się ją nadpisać.

http://www.cezarywalenciuk.pl/post/2011/06/28/Kurs-Obiektowosc-w-C-Metody-i-dziedziczenie-12.aspx

0

Przecież ten poprawiony kod się normalnie kompiluje.

http://ideone.com/3xbRQ5

1

@finito, a po co zagnieżdżasz klasy?

0

Dobra, już doszedłem. Mój błąd polegał na tym, że zrobiłem:

 
public class klasa
{
      public class klasa_potomna : klasa
      {
       }
}

A powinno być:

 
public class klasa
{
}
public class klasa_potomna : klasa
{
}
0

Nawet z zagnieżdżoną klasą tamten poprawiony kod normalnie się kompilował.

1 użytkowników online, w tym zalogowanych: 0, gości: 1