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

Szablony klas - błąd przy tworzeniu obiektu (template argument list)

Ostatnio zmodyfikowano 2014-09-29 20:50
Autor Wiadomość
ubidragon
Temat założony przez niniejszego użytkownika
Szablony klas - błąd przy tworzeniu obiektu (template argument list)
» 2014-09-28 12:14:51
Witam. Chciałem napisać program symulujący konto bankowe. Program miał być oparty na szablonach, żeby można było wykonywać operacje na różnych typach danych.
Każda operacja opisana obiektem w szablonie zawierającym jej opis oraz kwotę.
Konto też miało być szablonem i przechowywać wszystkie operacje w kontenerze danych STL. Niestety przy tworzeniu obiektu konta otrzymuje błąd

error C2955: 'konto' : use of class template requires template argument list

C/C++
template < typename typ >
class dochod
{
private:
    string opis;
    typ kwota;
public:
    dochod( string _opis, typ kwota );
};

template < typename typ >
dochod < typ >::dochod( string _opis, typ kwota )
{
    opis = _opis;
    kwota = _kwota;
}

template < typename typ >
class zwrot
{
private:
    string opis;
    typ kwota;
public:
    zwrot( string _opis, typ kwota );
};

template < typename typ >
zwrot < typ >::zwrot( string _opis, typ kwota )
{
    opis = _opis;
    kwota = _kwota;
}


template < typename typ >
class konto
    : public zwrot < typ >
     , public dochod < typ >
{
private:
    std::vector < typ > tablica;
    typ kwota;
public:
    konto();
   
    typ dodaj( typ operacja )
    {
        tablica.push_back( operacja );
    }
   
};

template < typename typ >
konto < typ >::konto()
{
    kwota = 0;
}



int main()
{
    konto test();
   
    _getch();
    return 0;
}

a przecież konto nie ma żadnych argumentów, jedynie domyślnie kwota wypełnia się 0.
P-117699
pekfos
» 2014-09-28 12:35:43
C/C++
konto < Typ > test;
P-117700
colorgreen19
» 2014-09-28 12:39:03

C/C++
typ kwota;
//...
kwota = 0;

a co jeśli pod typ dasz np. string? wtedy bedzie
string kwota = 0;
 co raczej nie jest poprawne...
P-117701
ubidragon
Temat założony przez niniejszego użytkownika
» 2014-09-28 14:26:26
Zakładam tylko używanie typów liczbowych, dzięki szablonom będzie można wykonywać operacje zarówno int jak i float.

konto < Typ > test;

chodzi o tworzenie obiektu?
P-117711
pekfos
» 2014-09-28 14:51:39
chodzi o tworzenie obiektu?
Nie da się ukryć.
P-117714
ubidragon
Temat założony przez niniejszego użytkownika
» 2014-09-28 15:57:58
Tak, zadziałało :)

Pytanie, czy osobno muszę tworzyć obiekt każdej transakcji i potem dodawać je do konta, czy da się to zrealizować na inne sposoby?
P-117719
Jacob99
» 2014-09-28 16:42:06
Nie musisz tworzyć obiektu. Możesz stworzyć tablicę, vector, listę, itp.
Zależy co chcesz konkretnie zrobić
P-117721
ubidragon
Temat założony przez niniejszego użytkownika
» 2014-09-28 17:42:12
W sumie to jest vector wewnątrz klasy konto i był zrobiony do przechowywania wszystkich wykonanych operacji na koncie.


Chciałem jeszcze przeciążyć operator wyjścia strumienia << żeby wyświetlać wszelkie operacje dokonywane na koncie, ale nie cche działać ani się kompilować, kilka błędów, pewnie znowu coś źle robię

C/C++
template < typename typ >
class konto
    : public zwrot < typ >
     , public dochod < typ >
{
private:
    std::vector < typ > tablica;
    typ kwota;
public:
    konto();
   
    typ dodaj( typ operacja )
    {
        tablica.push_back( operacja );
    }
   
    friend ostream & operator <<( ostream & wyjscie, const konto & wyj );
   
};

ostream & operator <<( ostream & wyjscie, const konto & wyj )
{
    for( int i = 0; i < wyj.tablica.size(); ++i )
    {
        wyjscie << wyj.tablica[ i ] << endl;
    }
    return wyjscie;
}

takie błędy otrzymuję:

error C2662: 'std::vector<_Ty,_Ax>::size' : cannot convert 'this' pointer from 'const std::vector<typ>' to 'const std::vector<_Ty,_Ax> &'
error C2678: binary '[' : no operator found which takes a left-hand operand of type 'const std::vector<typ>' (or there is no acceptable conversion)
error C2955: 'konto' : use of class template requires template argument list
P-117724
« 1 » 2 3
  Strona 1 z 3 Następna strona