2009-03-15, 14:45
  #1
Medlem
Hej!

Jag har försökt att finna lite information angående klassen här nedan om vad det olika funktionerna/metoderna gör.

Det är en övningsuppgift från en c++ bok, så här ser klassen ut:

Kod:
Class Ko
{
      char namn[20];	
      char * hobby;
      double vikt;
      
      public:
             Ko(); // vanlig konstruktor... 
             Ko( const char * nm, const char* ho, double vkt); 
             Ko (const ko c &);
             ~Ko();
             Ko operator=(const Ko & k);
             void VisaKo(); // visa namn, hobby och vikt för en ko
             
}

nu till övningen så står det bara:

Citat:
Implentera klassen och skriv ett kort program som använder alla medlems funktioner

Jag skulle bli glad om någon kunde också förklara de här två raderna:
Kod:
Ko (const ko c &);
och
Kod:
Ko operator=(const Ko & k);
Citera
2009-03-15, 17:11
  #2
Medlem
blueCommands avatar
Tips:

Copy constructor
Assignment operator
Citera
2009-03-15, 22:13
  #3
Medlem
hmm hänger inte med...
Citera
2009-03-15, 23:02
  #4
Medlem
blueCommands avatar
Kod:
Ko (const ko c &);
Copy constructor

Kod:
Ko operator=(const Ko & k);
Assignment operator
Citera
2009-03-16, 21:08
  #5
Medlem
Nu har jag läst angående det på http://en.wikipedia.org/wiki/Assignm...tor_in_C%2B%2B

Både den ena och den andra.

Jag förstår inte hur jag ska få klassen att fungera.. Kompilatorn ger mig följande fel:

Citat:
[Linker error] undefined reference to `Ko::Ko(char const*, char const*, double)'

så här ser klassen hittils

Kod:
class Ko
{
      char namn[20];	
      char * hobby;
      double vikt;
      
      public:
             Ko(); // vanlig konstruktor... 
             Ko(const char * nm, const char* ho, double vkt); 
             Ko(Ko const& copyFromMe); // coping the constructor
             ~Ko();
             Ko operator=(const Ko & k);
             
             void mataIn()
             {
                  cout << "Namn: ";
                  cin >> namn;
                  cout << endl;
                  cout << "Hobby: ";
                  cin >> hobby;
                  cout << endl;
                  cout << "Vikt: ";
                  cin >> vikt;
                  cout << endl;
             }
             void VisaKo() // visa namn, hobby och vikt för en ko
             {
                  cout << "Namn: " << namn << endl;
                  cout << "Hobby: " << hobby << endl;
                  cout << "Vikt: " << vikt << " kg" << endl;
             }
};

Tar jag bort semikolon från slutliga måsvinge
så får jag följande error:

Citat:
45 C:\Documents and Settings\User\Skrivbord\testing.cpp new types may not be defined in a return type
45 C:\Documents and Settings\User\Skrivbord\testing.cpp extraneous `int' ignored
45 C:\Documents and Settings\User\Skrivbord\testing.cpp `main' must return `int'
Citera
2009-03-17, 00:27
  #6
Medlem
blueCommands avatar
Klart du får länkningsfel då du aldrig implementerar en konstruktor.

Skriv något i stil med:
Kod:
Ko(const char * nm, const char* ho, double vkt)
{
   strncpy( namn, nm, 20 );
   hobby = strdup( ho );
   vikt = vkt;
}
Citera
2009-03-18, 19:10
  #7
Medlem
Men hur ska man få övriga konstruktorer att funka då?
Hittar inget vettigt exempel på hur man kan tillämpa cpy construct o assign operator...

Skulle du möjligen visa hur man gör?

Så här ser ut iaf nu...

Kod:
int main(int argc, char *argv[])
{
    Ko *k1, *k2, *k3 = new Ko();
    k1->mataIn();
    k2->Ko("Ida", "Äta Gräs", "100");
    k3->Ko(k1);
    cout << "Visar kossan 1" << endl;
    k1->VisaKo();
    cout << "Visar kossan 2" << endl;
    k2->VisaKo();
    cout << "Visar kossan 3 vilket egenskaperna är kopierade från kossan 1" << endl;
    k3->VisaKo();
    system("pause");
    return 0;
}

får:

Citat:
63 C:\Documents and Settings\User\Skrivbord\testing.cpp invalid use of `class Ko'
64 C:\Documents and Settings\User\Skrivbord\testing.cpp invalid use of `class Ko'
Citera
2009-03-18, 19:36
  #8
Medlem
blueCommands avatar
Har du verkligen kikat på t.ex första träffen på google?
http://www.fredosaurus.com/notes-cpp...structors.html
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in