ďťż

Ładny brzuch

Hej mam takie klasy i próbuje usunąć wieloznaczność jednak nie chce wyjść, choć
wydaje się że robię dobrze:
class samochod { public:  int x; }; class lodka { public:  int x; }; class amfibia: public samochod, lodka { public:  int amfibia::x()  {    return samochod::x;  } };
Wywala kompilator błąd przy int amfibia::x()
"[C++ Error] Unit1.cpp(24): E2014 Member is ambiguous: 'samochod::x' and 'lodka::x'" ?



Tak ogólnie to bez -pedantic się powinno skompilować, ale jeśli chcesz usunąć ten błąd to możesz wprowadzić jakąś wirtualną klasę bazową, z której będą dziedziczyły zarówno łódka jak i samochód.
Czyli na przykład tak:
class Transport {  public:    int x; }; class Lodka : virtual public Transport { // ... }; class Samochod : virtual public Transport { // ... }; class Amfibia : public Lodka, public Samochod { // ... };
Użytkownik Chmurek edytował ten post 31 marzec 2006, 21:32
taka rada na przyszłość: warto czasem używać trochę dłuższych nazw, przy małych programach nie ma to wielkiego znaczenia, ale gdy czyta się dłuższy kod i trzeba rozkodowywać zmienne typu x1, x2, x3..... o ile ławiej byłoby zastosować np "rozmiar", "szybkosc" itp :)

Sądzę, że po prostu podał taki przykład z x. ;)



Robi to specjalnie; to jest przykład z Symfonii.
A błąd to tu raczej jest w związku z funkcją - bo kto to widział, żeby funkcja i zmienna się tak samo nazywała? :)

//nie kompilowałem tego i nie sprawdzałem, więc na 100% pewny nie jestem

Po komunikacie błędu, który zacytował autor tematu raczej widać, że to nie z powodu takiej samej nazwy metody jak nazwa składowej. ;)
Użytkownik Chmurek edytował ten post 31 marzec 2006, 21:32
blad nie jest zwiazany z kodem ktory gosc wkleil.

class samochod { public: int x; }; class lodka { public: int x; }; class amfibia: public samochod, lodka { public: int x() {   return samochod::x; } }; int main() { return 0; } kompiluje sie poprawnie bo jest poprawne (po korekcie - metoda x) - zarowno z pedantic jak i Wall, ansi.

na 100% blad jest przy wywolywaniu funkcji/zmiennej x, ale ofkoz nie raczyl podac reszty :P

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •