Deklaracja klasy zagnieżdżonej w szablonie innej klasy

0

Witam,

mam pewien problem z napisaniem deklaracji klasy zawartej w szablonie innej klasy.

przyklad:

template <typename T>
class A
{
  friend class B;

  public:
    class B;
    A() {}
    void fn(B & n);
};

template <typename T>
class A<T>::B
{
  public:
    B() {}
    T f();
    
    B & operator++();
};

template <typename T>
void A<T>::fn(A<T>::B & n) // czy to jest dobrze napisane?
{

}

template <typename T>
typename A<T>::B & A<T>::B::operator++() // tutej nie wiem
{

}

template <typename T>
T A<T>::B::f() // tutaj tez nie wiem
{

}

przy pisaniu tych dwoch ostatnich po A<T>:: nie wyswietlaja mi sie (VC++2005 EE) skladniki klasy B, kiedy napisze A<T>::B<T>:: wywala mi wszystkie globalne

troche mi sie miesza to wszystko, bardzo prosze o podpowiedz.

0

template <typename T>
void A<T>::fn(A<T>::B & n)

template <typename T>
typename A<T>::B & A<T>::operator++()

template <typename T>
T A<T>::f()

wszystkie w/w 3 sa poprawne. jesli VC2005 ma problem - no coz.. zdarza mu sie. najwazniejszy test poprawnosci to to czy sie kompiluja!

aby "poprawic" wyswieltanie podpowiedzi - mozesz sprobwoac usunac plik .NCB siedzacy w katalogu z Twoim solution - wylacz visuala, usun plik, wlacz visuala, otworz projekt - na pasku stanu powinno sie pojawic info ze IntelliSense parsuje pliki. nic nie rob, cierpliwie odczekaj az skonczy. moze pomoze, moze nie..

jak Visual po napisaniu czegos wyswietla w uzupelnieniach liste globali -- to znaczy ze wlasnie albo .ncb sie uszkodzil, albo ze ... skaldnia jest dla niego za trudna i wyswietla domyslna liste symboli.. nic sie nie poradzi

0

Kompiluje sie:)

VC2005 puszcza void main(), dlatego zawsze staram sie upewnic czy pisze kod poprawnie.

Usuniecie .ncb faktycznie pomaga (w niektorych przypadkach).

Bardzo dziekuje za pomoc!

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