Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

Klasa wewnętrzna w C++

#1
Klasa wewnętrzna w C++
Witam. Mam dość dziwny problem ze zdefiniowaniem funkcji, której jako wartość zwracaną chcę ustawić wskaźnik do obiektu klasy wewnętrznej. Dziwny ponieważ gdy zdefiniuję funkcję wewnątrz klasy (tej zewnętrznej, będącej szablonem) to kompilator nie widzi żadnego błędu, natomiast gdy wewnątrz w/w klasy funkcję tylko zadeklaruję to kompilator znajduje błąd przy próbie definicji funkcji na zewnątrz. Obrazowo wygląda to mniej więcej tak:
template <typename typ>
class bt
{

  class node
   {
   typ value;
   };

node* fun(typ x, node* und); //deklaracja funkcji
};

template <typename typ> 
node* bt<typ>::fun(typ x, node* und) //tej linijki kompilator się czepia mówiąc: 'node does not name a type,                                            //lecz  gdy zdefiniuję funkcję wewnątrz klasy bt<> to wszystko jest ok... dlaczego?
{
definicja....
}
 (Używam DEV C++)
 System operacyjny: windows_eight Przeglądarka: firefox
#2
RE: Klasa wewnętrzna w C++
Witam, klasa node nie jest widoczna, dlatego trzeba jawnie się do niej odwołać:
Kod:
template <typename T>
class bt
{
    class node
    {
        T value;
    };
    node* fun(T x, node* und); //deklaracja funkcji
};

template <typename T>
typename bt<T>::node* bt<T>::fun(T x, node* und)
{
}

 System operacyjny: linux_ubuntu Przeglądarka: firefox
#3
RE: Klasa wewnętrzna w C++
I tu mnie właśnie zastanawia dlaczego nie jest widoczna w definicji funkcji, która została zadeklarowana w miejscu dostrzegającym definicję klasy node ? Natomiast w tym samym ciele tej samej funkcji, lecz owszem- zdefiniowanej w zakresie, w którym klasa node jest widoczna, błędu już żadnego nie ma. Kompilator nie widzi/nie rozumie zapisu:
node* bt<typ>::fun(typ x, node* und) (gdzie podany jest operator zakresu wyraźnie zaznaczający, o którą funkcję której klasy chodzi)? Byłbym bardzo wdzięczny za fachowe wytłumaczenie bo mi to nie daje spaćOczko
 System operacyjny: windows_eight Przeglądarka: firefox
#4
RE: Klasa wewnętrzna w C++
Definicja klasy node znajduje się wewnątrz klasy bt, dlatego trzeba się jawnie odwołać do niej - samo jawne odwołanie się do metody fun nie rozwiązuje sprawy.

 System operacyjny: linux_ubuntu Przeglądarka: firefox
#5
RE: Klasa wewnętrzna w C++
Byłem przekonany, że skoro jest to funkcja klasy zewnętrznej (czyli znająca klasę wewnętrzną Język ) to jej ciało może wyglądać tak samo wewnątrz jak i na zewnątrz tej klasy bt. Dodam, że przy próbach definiowania testowałem formuły typu:
template <typename typ> 
node* bt<typ>::fun(typ x, node* und)...

template <typename typ>
bt<typ>::node* bt<typ>::fun(typ x, node* und)...

template <typename typ>
bt<int>::node* bt<typ>::fun(typ x, node* und)...

template <typename typ>
bt<typ>.
node* bt<typ>::fun(typ x, node* und)...

i chyba jeszcze parę innych, lecz przez myśl mi nie przeszło, że w linijce nazwy tej funkcji (na zewnątrz klasy) przy definiowaniu musi się powtórzyć słowo kluczowe typename Wesoły Wielkie dzięki za pomocOczko
 System operacyjny: windows_eight Przeglądarka: firefox
Programy: Polecane / Nowe / Inne




Podobne wątki (Klasa wewnętrzna w C++)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Klasa, a funkcja zapisująca dane do pliku. Dreamer1x6xX 3 8498 26.03.2015, 08:47
Ostatni post: Szachista
  C++ Windows Forms App + własna klasa gubi 0 3632 23.09.2012, 18:57
Ostatni post: gubi
  jak to rozumieć? Case wewnętrzna zagnieżdżona w instrukcji wyboru Case zewnętrznej dawid653 2 3044 24.06.2011, 12:47
Ostatni post: dawid653

Skocz do:


Wybrane wątki (Klasa wewnętrzna w C++)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  [JavaScript] Znajdowanie przedziału czasu rafal12999 0 4698 10.12.2019 17:58
Ostatni post: rafal12999
  Przekazywanie wskaźnika przez referencję w Qt Trojan3000 3 18119 10.12.2019 13:16
Ostatni post: Ajgor
  Proszę o pomoc w uzupełnieniu ankiety dt. Zawodu Programisty MaleMonki 0 4726 17.11.2019 12:47
Ostatni post: MaleMonki
  Spring framework – jakie strony polecacie do nauki? olek23 5 11165 15.11.2019 15:57
Ostatni post: Alsenas
  Programowanie windy (problem) w C++ mysza2323 2 10596 06.11.2019 23:04
Ostatni post: mysza2323
  Programy w C ~Anonim 1 10695 22.10.2019 17:48
Ostatni post: Szachista
  Wyświetlanie informacji z bazy danych na stronie www PitPlay 1 11132 16.09.2019 11:18
Ostatni post: Ajgor
  Błąd przy uruchamianiu programu w Java z wiersza poleceń Physicist 3 5124 30.08.2019 14:16
Ostatni post: Physicist
  Python z wiersza poleceń Physicist 15 29578 21.08.2019 20:14
Ostatni post: Physicist
  Transfer plików via FTP Visual Basic FireBytes 3 7656 15.08.2019 07:41
Ostatni post: Szachista
  Menu wysuwane z boku patryk67 1 10745 07.08.2019 12:43
Ostatni post: aht
  Visual Basic Excel l.całkowitą przedstawić w postaci szesnastkowej fugaz 4 12727 18.06.2019 21:36
Ostatni post: fugaz
  Nauka do Olimpiady Informatycznej? piotr0905 1 12111 08.06.2019 16:50
Ostatni post: wlisik
Ściana Prosta gra w Builder C++ Kiranek1 1 12274 31.05.2019 15:20
Ostatni post: Szachista
  Menu (Nie widoczne długie opisy) wanhelsing 5 14101 28.04.2019 19:31
Ostatni post: koneton