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

Zašto klasa neprima karakter kao parametar objekta

[es] :: C/C++ programiranje :: Zašto klasa neprima karakter kao parametar objekta

[ Pregleda: 2162 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

fanfare
nezaposlen
Prnjavor,BiH

Član broj: 231940
Poruke: 27
*.dialup.blic.net.



Profil

icon Zašto klasa neprima karakter kao parametar objekta12.12.2009. u 17:41 - pre 174 meseci
Pokušavam da kreiram zadani objekat gdje je jedan od parametara tipa char,ali mi nikako to neuspijeva.Ako neko može da mi pomogne,bio bih zahvalan.
Evo samog zadatka:

Definisati klasu Element koja predstavlja apstrakciju hemijskih elemenata. Svaki hemijski element opisan je simbolom (do 2 znaka), rednim brojem u periodnom sistemu elemenata i masenim brojem(približno jednako ukupnom broju protona i neutrona u jezgru atoma).

Klasa Element treba da ima:
a) konstruktor-podrazumijevano kreira element čiji je naziv „* “ ,a redni i maseni broj nula. Inače, element može da se inicijalizuje na osnovu podataka koje konstruktor može da primi kao argumente.

b) funkciju članicu getSimbol- vraća simbol elementa.

Za klasu Element treba preklopiti sljedeće operatore:

a) operator << - na zadatom izlaznom mediju ispisuje simbol elementa. Omogućiti kaskadno pozivanje.

b) operator () – vraća maseni broj elementa.

Razdvojiti interfejs od implementacije,tj. Funkcije članice definisati izvan definicije klase.

Evo kako sam ja to uradio:

Code:
#include <iostream>

using namespace std;

class Element
{
      public:
             Element();
             Element( char *, int , double);
             char getSimbol();                                   // vraca simbol Elementa
             friend ostream & operator<< ( ostream &izlaz, const Element &e );// ispisuje simbol Elementa
             double operator()(int i);                    // vraca maseni broj elementa
             ~Element();
      private:
              char *simbol;
              int redni_broj;
              double maseni_broj;      
};
Element::Element()                           // podrazumijevano kreira element ciji je naziv
{                                            // "*" ,a redni i maseni broj nula.
       char *s;  s="*";                            
       simbol=new char[1]; strcpy(simbol,s); 
       int rb=0; redni_broj=rb;
       double mb=0; maseni_broj=mb;
}
Element::Element( char *s, int rb, double mb)
{
       simbol=new char[2]; strcpy(simbol,s);         
       redni_broj=rb;
       maseni_broj=mb;
}
char Element :: getSimbol()
{
     return (*simbol);
}
ostream & operator<<( ostream &izlaz , const Element &e)
{
        izlaz << e.simbol;
        return izlaz;
}
double Element::operator()(int i)  // za redni broj elementa u period.sistem.elem.vraca maseni broj
{
       Element e;
       e.redni_broj=i;
       return e.maseni_broj;
}
Element::~Element()
{
                   delete[]simbol;
}

main()
{
      Element a;
      cout << a << endl; 
      Element b(H,2,1.01);
      cout << b;   
      
      system("pause");
}
 


A evo šta mi javlja kao grešku:
In function `int main()':
`H' undeclared (first use this function)

 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Zašto klasa neprima karakter kao parametar objekta12.12.2009. u 18:26 - pre 174 meseci
Stavi H u navodnike, to je string. "H". Takođe, nemoj da radiš new char[2], nego bar new char[3], jer ti treba mesta i za NUL karakter. Zapravo nemoj ni new char[3] nego new char[strlen(s) + 1], tako garantovano kopiraš ceo string, šta god da je u njemu.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Zašto klasa neprima karakter kao parametar objekta

[ Pregleda: 2162 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

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