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

Error: Default argument for template parameter for class enclosing 'T Config::get(std::string, std::string, Ft (*)(Rt))'

Ostatnio zmodyfikowano 2013-05-25 21:45
Autor Wiadomość
MordiJC
Temat założony przez niniejszego użytkownika
Error: Default argument for template parameter for class enclosing 'T Config::get(std::string, std::string, Ft (*)(Rt))'
» 2013-05-25 20:21:24
Witam. Może mi ktoś powiedzieć, dlaczego wywala mi taki błąd
Error: Default argument for template parameter for class enclosing 'T Config::get(std::string, std::string, Ft (*function)(Rt))'
w tym oto kodzie?:
C/C++
template < class T, class Ft = int, class Rt = string >
T Config::get( string section, string variable, Ft( * function )( Rt arg ) ); //to jest tylko deklaracja funkcji, nie zrobiłem jeszcze takowego jej ciała
Ta funkcja ma pobierać od usera sekcję i zmienną (config) i wywoływać funkcję podaną w 3 argumencie.
Przykład:
C/C++
//...
Config c( "file.conf" );
string val = c.< string, int, char > get( "Sekcja", "Zmienna", & print ); // print jest typu int i przyjmuje argument typu char
//...
P-83894
pekfos
» 2013-05-25 20:24:02
C/C++
c.< string, int, char > get
Co to?
P-83897
DejaVu
» 2013-05-25 20:24:13
Deklarację funkcji możesz zrobić tylko dla funkcji. Deklarację metody musisz zrobić wewnątrz definicji klasy - z przytoczonego kodu wynika jednak, że robisz deklarację metody poza klasą (co jest błędne).
P-83898
MordiJC
Temat założony przez niniejszego użytkownika
» 2013-05-25 20:55:05
Wielkie dzięki. Nie wiedziałem, że nie mogę tak pisać kodu. Ale cóż, jestem samoukiem :D
P.S. Wiecie, jak zrobić szablon metody bez tworzenia szablonu klasy?
P-83903
DejaVu
» 2013-05-25 21:26:18
C/C++
class Klasa
{
public:
    template < class X >
    void metoda( const X & wartosc );
};
P-83905
Monika90
» 2013-05-25 21:32:42
Szablon funkcji składowej:
C/C++
class X
{
public:
    template < class T, class U >
    void f( T, U ) { }
};
Pamiętaj, że domyślne parametry szablonów funkcji są dostepne dopero w C++11.
A wywołuje się to tak:
C/C++
X x;
x.f < char, int >( 90, 1 );
A najlepiej tak:
C/C++
X x;
x.f( 'x', 1 );
P-83907
MordiJC
Temat założony przez niniejszego użytkownika
» 2013-05-25 21:45:00
jakim sposobem się do tego dostać? bo mój sposób podobno jest zły.
Np. Jeżeli bym chciał uzyskać dostęp do mojej w/w metody? (dopiero zaczynam zababę zszablonami i nie łapię do końca o co biega)

Edit

Nie ważne, niezaładowało mi części powyższego posta.

Wielkie dzięki za wszystko. Resztę problemów będę rozwiązywał sam.
P-83911
« 1 »
  Strona 1 z 1