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 8229 26.03.2015, 08:47
Ostatni post: Szachista
  C++ Windows Forms App + własna klasa gubi 0 3509 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 2912 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
  Nieprawidłowy format ciągu wejściowego. radman 9 1315 05.11.2020 22:08
Ostatni post: Bodzio Chomik
  Wybór języka Xyio 5 1460 30.10.2020 15:07
Ostatni post: bartexo23
  Skrypt usuwający pliki azds1 1 839 13.10.2020 08:45
Ostatni post: Michu_PL
  Mam mały problem ze zrobieniem tego programu Asasin12PL 2 1475 12.10.2020 17:10
Ostatni post: Asasin12PL
  Skrypt pod sklep internetowy Talcia 6 11142 24.09.2020 22:20
Ostatni post: Ajgor
  Książki do nauki C# olek23 16 28145 28.08.2020 09:51
Ostatni post: Ajgor
  [VBA Excel] Wyszukiwanie wartości w kolumnie Pioro 2 5069 22.06.2020 18:27
Ostatni post: Pioro
  Validacja JS kolo48 3 6817 16.04.2020 14:06
Ostatni post: koneton
  Automatyczne wykonywanie czynności na stronie Fresher 0 5791 15.04.2020 20:53
Ostatni post: Fresher
  Visual Studio Code- zmiana folderu rozszerzeń Physicist 4 7802 05.04.2020 15:46
Ostatni post: Physicist
  Prośba o pomoc przy wyborze języka do konkretnego projektu. romands 6 7024 05.04.2020 14:07
Ostatni post: romands
Sad PhpMyAdmin w Mysql 8.0 Lauczi 3 6856 31.03.2020 16:34
Ostatni post: Lauczi
Ściana Klika pytań plz pomóżcie Samek2222 1 6483 22.03.2020 18:59
Ostatni post: Ajgor
  Pytanie - programowanie batch [cmd] Max23 0 6405 20.03.2020 01:03
Ostatni post: Max23
  Oczekiwanie na Akcje przycisku wanhelsing 8 8760 01.03.2020 19:44
Ostatni post: Szachista