Oprettet ons. d. 22. november 2000 kl. 12:14:21

mickni33
mickni33 (13.827 point. Point ude: 150)

oprette et objekt i en anden klasse

Borland Builder 4.0


///////////////////////////////////////////
String Kundedata::indtast_fornavn(String& navn){
        String fornavn=navn;
        return fornavn;
}
///////////////////////////////////////////

String Kunde::indtast(String& temp)
  { Kundedata* kundedata;
    kundedata->indtast_fornavn(temp);
    return  (temp);
    }

Der er to klasser  Kunde og Kundedata..
disse to metoder fungerer kun hvis jeg opretter kundedata objektet lokalt i metoden
hvis jeg ligger den i public eller private virker lortet ikke.......

Og for at det ikke skal være løgn så virker fornavn også kun hvis jeg erklærer i den lokale metode som String fornavn.....
altså så længe jeg erklærer dem lokalt fungerer programmet men det er ikke særligt hensigtsmæssig at man opretter et objekt i hver sin metode....eller er det???

Hvor når skal man bruge __fastcall, kan det have nogen betydning.
Programmet kan godt compilerer  men går ned når jeg indtaster navn

Skrevet ons. d. 22. november 2000 kl. 13:08:57| #1

soepro
soepro (38.106 point)
Du laver i alt fald een fejl her:

String Kunde::indtast(String& temp)
{ Kundedata* kundedata;
  kundedata->indtast_fornavn(temp);
  return  (temp);
}

Kundedata her er jo en pointer til et element af klassen Kundedata - men du har jo ikke fortalt den hvilket element endnu !!! Normalt skal man lave allokere et element til pointeren (hvis man ikke allerede HAR gjort det) vha. new operanden:

  Kundedata* kundedata = new Kundedata(temp);
                    -eller-
  Kundedata* kundedata = new Kundedata();
 
idet jeg antager at man kan angive navn i constructoren til Kundedata klassen. Hvis du skal gemme Kundedata i Kunde klassen, må man vel formade at klassen Kunde indeholder en Kundedata pointer allerede. I så fald skal du ændre d.o. til:

  kundedata = new Kundedata();
  kundedata->indtast_fornavn(temp);

Hvis du vil have et helt præcist svar, må vi have dine klassedefinitioner her ud på eksperten. (Se evt. også http://www.eksperten.dk/ (...) som også omhandler klasser.)

Skrevet ons. d. 22. november 2000 kl. 13:33:20| #2

mickni33
mickni33 (13.827 point)
Klassen Kunde indeholder en Kundedata pointer objekt men den godtager ikke når den står i klasse def. kun hvis jeg laver den i en lokal metode. kan det passe???

Skrevet ons. d. 22. november 2000 kl. 15:28:02| #3

soepro
soepro (38.106 point)
Nej, det burde være muligt at referere Kundedata klassen i Kunde - men igen, det ville være nemmere hvis du lige lagde klassedefinitionerne ud.

Skrevet tor. d. 23. november 2000 kl. 16:13:01| #4

tuxen
tuxen (22.226 point)
Hej.
du kan sagtens lægge pointeren til sdin anden klasse i både public og private, men hvis du vil bruge den til noget SKAL du initialisere den med NEW.
NEW vil kalde dens constructor og der kan du initialisere, og du vil holde et obj af typen kundedata.
New bruges fordi den dynamisk opretter obj. Det er jo ikke hesigtsmæssigt at ens klasser har obj af hinandens der måske aldrig vil blive brugt.
Som din pointer står her nede under, peger den i det blå ud i memory.

String Kunde::indtast(String& temp)
  { Kundedata* kundedata;
    kundedata->indtast_fornavn(temp);
    return  (temp);
    }

P.S det er det samme som soepro vil fortælle dig, men her sagt på en anden måde.
M.V.H Thue

Skrevet tir. d. 28. november 2000 kl. 22:42:29| #5

madsjakob
madsjakob (21.270 point)
Det kan godt lade sig gøre.
Du kan evt prøve noget lignende

// Header

class Kunde
{
  private:
      Kundedata *kundedata;
........
}

// Implementering

Kunde::Kunde()
{
  kundedata = new Kundedata;
........
}

--------
Efter at have sat pointeren til at pege på et element, skulle du gerne kunne bruge det i dine
operationer(funktioner) i kundeklassen

/MJ

Skrevet ons. d. 29. november 2000 kl. 08:52:06| #6

soepro
soepro (38.106 point)
mj >> præcis som jeg skrev.

Skrevet ons. d. 29. november 2000 kl. 17:46:47| #7

madsjakob
madsjakob (21.270 point)
Soepro >> Jepper!

Skrevet tir. d. 02. januar 2001 kl. 11:27:27| #8

mickni33
mickni33 (13.827 point)
Da der har været ferie har jeg ikke været på nettet. desværre bliver der ikke givet nogle point da jeg selv har prøvet de eks. som i har givet. fandt senere ud af at det ikke var programmeringen det var galt med, og da mit projekt nu er afleveret, og det hænger mig langt ud af halsen bliver der ikke kigget mere på det.
hilsen mickni33

Skrevet tir. d. 02. januar 2001 kl. 12:14:18| #9

soepro
soepro (38.106 point)
Det havde været en pæn gestus at give folk f.eks. 10 point for deres ulejlighed.

Skrevet tir. d. 02. januar 2001 kl. 12:18:49| #10

mickni33
mickni33 (13.827 point)
nååå ja det ville nok have været smart.undskyld jeg er lidt nye her på eksperten. Kan man gøre det nu? eller er det for sent.

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Updater Hybrid App

Oprettet den 18. april 2012 kl. 13.29
sir_madsen giver 100 point for svar | Giv et svar »

Ansi-c win32API - kan ikke oprette Richedit4.1 kontrol

Oprettet den 16. april 2012 kl. 22.13
cblcbl giver 60 point for svar | Giv et svar »

Iphone Objective C - Sætte image på et imageview.

Oprettet den 7. april 2012 kl. 11.36
lasserasch giver 30 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger