|
|
||||||
|
#1
|
|
|
|
|
Takie coś nie kompiluje się w gcc 4.3.3:
template<typename X> class A { public: typedef int type; type foo(); }; /* "expected constructor, destructor, or type conversion before 'A'" */ template<typename X> A<X>::type A<X>::foo() { return 0; } Jeśli zamiast A<X>::type wstawię int, to przechodzi. Dlaczego tak jest? w. |
|
|
|
#2
|
|
|
|
|
Użytkownik Wojciech Muła napisał:
[ciach] > A<X>::type A<X>::foo() { typename A<X>::type A<X>::foo() { ^^^^^^^ Pozdrawiam KK |
|
#3
|
|
|
|
|
Krzysiek Kowaliczek <krzysiek.kowaliczekREMOVE> wrote:
> Użytkownik Wojciech Muła napisał: > [ciach] > > A<X>::type A<X>::foo() { > > typename A<X>::type A<X>::foo() { > ^^^^^^^ Dzięki! w. |
|
#4
|
|
|
|
|
Wojciech Mula wrote:
> Krzysiek Kowaliczek <krzysiek.kowaliczekREMOVE> wrote: > >> Uzytkownik Wojciech Mula napisal: >> [ciach] >>> A<X>::type A<X>::foo() { >> typename A<X>::type A<X>::foo() { >> ^^^^^^^ Chyba sobie otaguje, jako temat do FAQ 8-) |
|
#5
|
|
|
|
|
"Pawel Kierski" <news> wrote in message
news:1cu1 > Wojciech Mula wrote: >> Krzysiek Kowaliczek <krzysiek.kowaliczekREMOVE> wrote: >> >>> Uzytkownik Wojciech Mula napisal: >>> [ciach] >>>> A<X>::type A<X>::foo() { >>> typename A<X>::type A<X>::foo() { >>> ^^^^^^^ > > Chyba sobie otaguje, jako temat do FAQ 8-) Co Ty na to aby po prostu przetlumaczy´c Q&A z FAQ w Comeau Comp.? http://www.comeaucomputing.com/techt...ates/#typename Pozdrawiam |
|
#6
|
|
|
|
|
Mateusz Loskot wrote:
> "Pawel Kierski" <news> wrote in message > news:1cu1 >> Co Ty na to aby po prostu przetlumaczy´c Q&A z FAQ w Comeau Comp.? > > [..] Nie wiem, czy koniecznie cale. W tym problemie chodzi w zasadzie tylko o fragment: <cytat> template <typename T> class xyz { void foo() { T::x * p; /* ... */ p = blah; } }; Does this declare p as a pointer to, or does it multiply some p somewhere by, T::x? If it should be a declaration, then you would do this to make that clear: template <typename T> class xyz { void foo() { typename T::x * p; /* ... */ p = blah; } }; Now we know that blah is being assigned to the local p in foo. </cytat> |
|
#7
|
|
|
|
|
Pawel Kierski wrote:
[..] > Does this declare p as a pointer to, or does it multiply some > p somewhere by, T::x? If it should be a declaration, then you would > do this to make that clear: > > template <typename T> class xyz { > void foo() { typename T::x * p; /* ... */ p = blah; } > }; > > Now we know that blah is being assigned to the local p in foo. > </cytat> Na tej podstawie urodzilem pytanie i odpowiedL: "Do czego sluzy slowo kluczowe typename?" http://pl.cpp.wikia.com/wiki/FAQ Krytyka i poprawki mile widziane. Pozdrawiam |
|
|
| Podobne wątki | |
| typedef dla wskaznika do funkcji szablonowej Witam, Potrzebuję stworzyć dwa typy, będące wskaźnikami do odpowiednich funkcji (bezargumentowej i argumentowej). Zatem utworzyłem typy: typedef void... |
|
| typedef w klasie Cześć, dlaczego zdefiniowany przeze mnie typ b( przykład poniżej ) nie jest widoczny przez kompilator? Kod kompiluje się dopiero po umieszczeniu typedef int b; przed... |
|
| [C++] deklaracje i definicje funkcji składowych w klasie szablonowej Witam. Mam sobie klase szablonowa: template<class t> class stos { unsigned short wysokosc; t** tablica; public: stos(unsigned short wysokosc) {// jakas tresc funkcji } |
|
| Zmienna static w klasie szablonowej Mam klasę(w pliku nagłówkowym debug.hpp): template<std::ostream &OUT> class outTrace { public: (...) static int wciecie; }; |
|
|
Czasy w strefie GMT. Teraz jest 08:18. | Privacy Policy
|