Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

wywolanie metody szablonowej w funckcji szablonowej

Ostatnio zmodyfikowano 2013-08-18 22:11
Autor Wiadomość
b00rt00s
Temat założony przez niniejszego użytkownika
wywolanie metody szablonowej w funckcji szablonowej
» 2013-08-18 21:47:51
Mam taki prosty program, w którym definiuję funkcję szablonową i chcę w niej wykorzystać metodę szablonową klasy. Dostaje jednak błąd podczas kompilacji. Poniżej w funkcji main sprawdzam, że wywołanie tej metody szablonowej jest poprawne.
C/C++
#include <QSharedPointer>


template < typename T, typename U >
inline QSharedPointer < T > my_cast_function( const QSharedPointer < U >& ptr )
{
    return ptr.staticCast < T >(); //blad kompilacji
}

class A { };
class B
    : public A
{ };

int main() {
   
    QSharedPointer < A > a_ptr( new B() );
    QSharedPointer < B > b_ptr = a_ptr.staticCast < B >(); //dziala
   
    //tak miałoby być, gdyby funkcja działała
    //QSharedPointer<B> b_ptr = my_cast_function<B>(a_ptr)
}

Oto komunikat kompilatora:
In function 'QSharedPointer<T> my_cast_function(const QSharedPointer<T>&)':
error: expected primary-expression before '>' token
  return ptr.staticCast<T>();
                         ^
error: expected primary-expression before ')' token
  return ptr.staticCast<T>();
                           ^

Z czego wynika błąd podczas kompilacji?
P-90497
Elaine
» 2013-08-18 22:11:03
Problem analogiczny do brakującego
typename
, trzeba wprost powiedzieć, czym jest staticCast.
C/C++
return ptr.template staticCast < T >();
P-90500
« 1 »
  Strona 1 z 1