Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

template <class Item, class Key>, kako poreknuti class?

[es] :: C/C++ programiranje :: template <class Item, class Key>, kako poreknuti class?

[ Pregleda: 2801 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

osmania
Panet

Član broj: 26316
Poruke: 773
*.20.11.vie.surfer.at.



+7 Profil

icon template <class Item, class Key>, kako poreknuti class?13.03.2008. u 20:34 - pre 168 meseci
ovo je jedna klasa:

Code:
template <class Item, class Key>
class ST 
  {
    private:
      struct node
        { int m; Item b[M]; int k;
          node() { m = 0; k = 0; } 
        };
      typedef node *link;
      link* dir;
      Item nullItem;
      int N, d, D;
    public:
      ST(int maxN)
        { N = 0; d = 0; D = 1; 
          dir = new link[D]; 
          dir[0] = new node;
        }
    };


eh sada pravi mi problem pri pokretanju.

kucam ovo:
Code:
#include <cstdlib>
#include <iostream>
#include "ST.cpp"

using namespace std;

int main()
{
         ST aaa;
 //     ST<int, int> aaa;
 //     ST<int, int>::ST(const ST<int, int>&) aaa;
   
     system("PAUSE");
     return EXIT_SUCCESS;
}


zelim samo da se konstruktor napravi, ne znam u cemu je greska. jer kasnije bi dodavao druge funkcije.
sa ovim template ne kontam kako poreknuti.
Hvala puno
 
Odgovor na temu

nikoladsp
nikola radovanovic
trenutno-developer
novi sad

Član broj: 5455
Poruke: 193
82.117.201.*



Profil

icon Re: template <class Item, class Key>, kako poreknuti class?14.03.2008. u 07:21 - pre 168 meseci
trebalo bi da imas nesto kao:
Code:
ST<int,int> obj(10);

znaci specijalizacija za Item i Key + konstruktor ti prima neki int parametar (max duzina).
ako hoces da instanciras objekat samo sa:
Code:
ST<int,int> obj;

onda moras da zadas default vrednost za parametar konstruktora, npr:
Code:
ST(int maxN = 10)

ja sam panker sa diplomom kod moje mame...
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.uvcms.com.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: template <class Item, class Key>, kako poreknuti class?14.03.2008. u 13:35 - pre 168 meseci
Ovaj kod pokazuje kako ne treba pisati klase. Sledi kraće objašnjenje:

- Skoro sve varijable članice klase imaju ime od jednog slova što je veoma loša praksa jer čini kod generalno nerazumljivim
- Kao da prethodno nije dovoljno postoje članice kao d i D koje dodatno doprinose nečitljivosti koda.
- Inicijalizacija članica tipa int se obavlja u telu konstruktora. Smatra se boljom praksom koristiti listu inicijalizacije za sve tipove koji su kardinalni.
- Imamo Item b[M] a M nigde nije definisano u prilozenom kodu
itd. itd.

Takodje uredi kod da liči na nešto. Ako ne znaš kako skini AStyle (astyle.sf.net) pa ulepšaj kod sa njime.

Sledi malo sređen kod

Code:
#include <cstdlib>

template <class Item, class Key>
class ST
{
private:
    struct node
    {
        int m;
        Item b[M];
        int k;
        node() : m(0), k(0) {}
    };
    typedef node *link;
    link* dir;
    Item nullItem;
    int N;
    int d;
    int D;
public:
    ST(int maxN) : N(0), d(0), D(1)
    {
        dir = new link[D];
        dir[0] = new node;
    }
};

int main(int /*argc*/, char** /*argv[]*/)
{
    ST<int, int> test(10);
    
    return EXIT_SUCCESS;
}

Tko leti vrijedi
 
Odgovor na temu

osmania
Panet

Član broj: 26316
Poruke: 773
*.20.11.vie.surfer.at.



+7 Profil

icon Re: template <class Item, class Key>, kako poreknuti class?14.03.2008. u 16:46 - pre 168 meseci
prvo da vam se zahvalim nema svaka cast hvala vam puno
druga stvar da li vama prijalvjiva gresku na liniji gdje je veliko M.

`M' was not declared in this scope

Inaqce ovaj code radi se o Extendible Hashing algoritam i pokusavam da ga sredim.
Inace nasao sam literature i neke dijelove coda sto pokusavam i da skontam princip rada . pa ako mi mozete pomoci bilo bi super.
Hvala puno

samo jos dodao bi oko Ovoga M,
inace u knjizi su ga tako naveli ali uopste ne objasnjavaju sta taj M veliko znaci, i kad stavim malo m onda isto neka greska mada se gore deklarisalo kao int...
hvala vam


[Ovu poruku je menjao osmania dana 14.03.2008. u 18:05 GMT+1]
 
Odgovor na temu

glorius
Damir Nikolic
C++ developer
SR

Član broj: 4366
Poruke: 428
91.150.118.*

ICQ: 208550327


+14 Profil

icon Re: template <class Item, class Key>, kako poreknuti class?17.03.2008. u 18:55 - pre 168 meseci
Stavi Item * b. Posle inicijalizuj na potrebnu velicinu.
EOF
 
Odgovor na temu

osmania
Panet

Član broj: 26316
Poruke: 773
*.20.11.vie.surfer.at.



+7 Profil

icon Re: template <class Item, class Key>, kako poreknuti class?17.03.2008. u 21:11 - pre 168 meseci
Citat:
glorius: Stavi Item * b. Posle inicijalizuj na potrebnu velicinu.


Izvini prijatelju nisam skonto sta si zelio da kazes sa ovim...
hvala...
 
Odgovor na temu

[es] :: C/C++ programiranje :: template <class Item, class Key>, kako poreknuti class?

[ Pregleda: 2801 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.