Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Titta på de här ni som kan C++! Objekt och grejer.

Postades av 2005-08-17 11:22:12 - Christian Mård, i forum c++, Tråden har 1 Kommentarer och lästs av 664 personer


Jag behöver hjälp med ett program för ett skol-projekt.
Jag skall med hjälp av ett dynamiskt allokerat objekt i main funktionen
komma åt en funktion i en annan fil. Funktionen i andra
filen klagar på att objektet är odeklarerat. Hur skall
jag lättast komma åt objektet i andra funktionen?

I main funktionen har jag allokerat minne för Person objektet.
i For loopen försöker jag kalla på visa() funktionen, men programmet
hänger upp sig.

Person *pers[antal];
pers[j] = new Person;


for(j = 0; j < antal; j++)
{

cout << "Ge namn och f" << oo << "delse" << ao << "r " <<
ao << "t person " << j+1 << ":" << endl;
cout << "Ge personens namn: ";
pers[j]->setName();
cout << "Ge personens f" << oo << "delse" << ao <<"r" <<
"(t ex 1981): ";
pers[j]->setbYear();
pers[j]->visa(); //Här hänger programmet upp sig.
}

I visa() funktionen nedan har jag igen allokerat person-objekt. Jag tror
att detta är fel. Jag skulle gärna försöka vara utan att allokera ett nytt
objekt i denna funktion. Jag skulle vilja att visa() funktionen skulle
referera till main funktionens objekt. Kan man lösa detta med
t.ex copy-konstruktor eller pekare?

void Person::visa()
{
int j;
extern int antal;
Person *pers[antal];
pers[j] = new Person;
for(j = 0; j < antal; j++)
{
cout << "Person" << j+1 << ":" << endl;
cout << "Namn\t :" << pers[j]->getName() << endl;
cout << "F"<<oo<<"delse"<<ao<<"r :" << pers[j]->getbYear() << endl;
cout << AO << "lder\t:" << pers[j]->countAge(pers[j]->getbYear()) << endl;
}
}


Svara

Sv: Titta på de här ni som kan C++! Objekt och grejer.

Postades av 2005-08-17 14:48:56 - Niklas Jansson

Du är helt fel ute.

Kort:
1. En klass skall representera utseendet på ett objekt. Flera objekt kan skapas utifrån klassen.
2. En metod för en klass ska representera en metod på ett enda objekt. Metoden kan anropas på flera objekt.

<b>>I visa() funktionen nedan har jag igen allokerat person-objekt. Jag tror
att detta är fel. Jag skulle gärna försöka vara utan att allokera ett nytt
objekt i denna funktion.</b>
Enligt ovan är det naturligtvis fel.

<b>>Jag skulle vilja att visa() funktionen skulle
referera till main funktionens objekt.</b>
I princip skulle du kunna det, men det är garanterat helt fel väg att gå. Sträva efter att låta alla delar av ett program känna till så lite som möjligt av sin omgivning.

<b>>Kan man lösa detta med
t.ex copy-konstruktor eller pekare?</b>
Nej, nej... tänk om!

Jag ska kort visa hur du kan skriva detta (det är ingen riktig kod, det är bara för att se principen):

class Person
{
public:
    //kanske en konstruktor, det är nog lämpligt

    void visa();
    //... massa mer grejer
private:
    std::string namn;
    int alder;
} ;

void Person::visa()
{
    std::cout << "Namn: " << namn << std::endl << "Ålder: " << alder;
}

//...

int main()
{
    Person[20] personer;
    //initiera dem 
    //...
    for(int i=0; i<20; i++)
        Person[i].visa();
}


Sen bör du definitivt använda std::vector istället för arrayer. Återkom om du har mer frågor eller om du inte förstår. Det blev lite snabbt och hafsigt som sagt.


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 617
27 953
271 709
5 725
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies