Vektorobjekt... (eller vad det nu heter)|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
Vektorobjekt... (eller vad det nu heter)
Fredrik Håkansson
Member
Medlem
Forum Posts: 8296
Member Since:
August 20, 2001
sp_UserOfflineSmall Offline
1
March 14, 2004 - 4:49 pm
sp_Permalink sp_Print

Hej, Jag håller på att skriva ett program...

Jag har skapat en klass och ett vektorobjekt till klassen:

Dryck temp[5]

Hur skickar man hela objektet (med alla de olika vektorerna) till en ny funktion, så att jag kan använda klassens datamedlemmar och funktioner även i den funktionen...

Avatar
fackamato
Member
Medlem
Forum Posts: 5913
Member Since:
March 5, 2002
sp_UserOfflineSmall Offline
569468
March 14, 2004 - 5:09 pm
sp_Permalink sp_Print

Heh. Vilket språk?

Avatar
Gamblor
Member
Medlem
Forum Posts: 3514
Member Since:
September 1, 2002
sp_UserOfflineSmall Offline
569483
March 14, 2004 - 5:28 pm
sp_Permalink sp_Print

Om det är C++ vi snackar så löses det enkelt med pekare.

Den nya funktionen behöver ha en strukturpekare/objektpekare som in-argument, och när du anropar funktionen skickar du med pekaren till strukturen som ett argument till funktionen.

Kom ihåg att du måste deklarera strukturvariabeln på sådant sätt att andra funktioner kan nå den, dvs public/protected.

I funktionen sedan adresserar du objektets medlemmar med -> istället för .

Fredrik Håkansson
Member
Medlem
Forum Posts: 8296
Member Since:
August 20, 2001
sp_UserOfflineSmall Offline
569516
March 14, 2004 - 6:00 pm
sp_Permalink sp_Print

Jo det är C++

Gamblor... Så långt har jag förståt (fast jag tänkte använda en referens istället)... Och jag har även lyckats med att skicka ett av vektorns värde. Men nu vill jag kunna skicka hela vektorn, med alla sina värden till den andra funktionen...

Avatar
Gamblor
Member
Medlem
Forum Posts: 3514
Member Since:
September 1, 2002
sp_UserOfflineSmall Offline
569555
March 14, 2004 - 6:44 pm
sp_Permalink sp_Print

Skulle du kunna vara vänlig att skriva hur deklarationen av vektorobjekten (med medlemmar och allt) ser ut. Det är även intressant att se hur funktionsdeklarationen ser ut och hur du anropar denna funktion.

Svårt att hjälpa till annars, för det finns risk att jag pratar äpplen och du pratar päron. 🙂

Fredrik Håkansson
Member
Medlem
Forum Posts: 8296
Member Since:
August 20, 2001
sp_UserOfflineSmall Offline
569576
March 14, 2004 - 7:01 pm
sp_Permalink sp_Print

Fixade det nog 😉

Men såhär ser det för tillfället ut:

// Dryck.h

class Dryck
{
char varunamn[20]; // Varans namn
float pris; // Varans pris

public:
Dryck() { pris = 0; strcpy(varunamn, ""); } // Konstruerare som nollställer datamedlemmar
~Dryck() {} // Destruerare

// Medlemsfunktion för tilldelning av ett drycknamn och pris
void Set_Dryck(float p, char vn[20]) { pris = p; strcpy(varunamn, vn); }

float Get_Pris() { return pris; } // Returnerar objektpris
char *Get_Varunamn() { return varunamn; } // Returnerar objektnamn
float Vaxel(float betalning) { return (betalning - pris); } // Returnerar växel vid beställning
};
// Kaffeautomat.cpp

#include <iostream>
#include <conio>
#include "Dryck.h"

using namespace std;

Dryck *Meny(Dryck *pekare);

int main()
{
Dryck Obj[5];

// Dryck *pObj = Obj;

char *Drycker[5] = { "Kaffe", "Mocka", "Choklad", "Nyponsoppa", "Fruktsoppa" };
float Dryckpris[5] = { 3, 3.5, 2.5, 4, 4.5 };
float Inbetalning = 0;
int Key = getch();

for(int i = 0; i < 5; i++)
{
Obj[i].Set_Dryck(Dryckpris[i], Drycker[i]);
}

Meny(&Obj[0]);
// do {
// cout << "test";
// system("cls");
// Meny(&Obj[0]);
// if(Key == 0) Key = getch()* - 1;
// } while(Key != 13);
}

Dryck *Meny(Dryck *pekare)
{
cout << "Vx84lj dryck Nr."; cout.width(60); cout << "Avsluta < Esc >" << endl;
for(int i = 0; i < 5; i++)
{
cout << "0 : " << pekare->Get_Varunamn() << "t: " << pekare->Get_Pris() << endl;
pekare++;
}
// cout << pekare->Get_pris();
return 0;
}
Avatar
dae
Kommer du hit ofta?
Medlem
Forum Posts: 410
Member Since:
July 28, 2003
sp_UserOfflineSmall Offline
569605
March 14, 2004 - 7:26 pm
sp_Permalink sp_Print

deklarera den nya funktionen ungefär såhär:

void foo(Dryck drycker[], int count);
alternativt:
void foo(Dryck *drycker, int count);

Därefter är det bara att köra på som vanligt:

for (int i = 0; i < count; i++)
drycker[i].Set_pris(12345);

anropa funktionen:

foo(Obj, 5);

Fredrik Håkansson
Member
Medlem
Forum Posts: 8296
Member Since:
August 20, 2001
sp_UserOfflineSmall Offline
569631
March 14, 2004 - 7:41 pm
sp_Permalink sp_Print

Det funkade inte speciellt bra... Men jag har redan löst det problemet...

Kan någon förklara varför programet hänger sig och sedan när jag trycker på enter så skriver den ut menyn (och avslutar sig själv) ... eller om jag trycker på en annan knapp så skriver det ut menyn om och om igen utan att jag kan stanna programmet????

Avatar
dae
Kommer du hit ofta?
Medlem
Forum Posts: 410
Member Since:
July 28, 2003
sp_UserOfflineSmall Offline
569637
March 14, 2004 - 7:47 pm
sp_Permalink sp_Print

eh?

kanske denna rad:

while (Key != 13);

den säger just att den ska loopa så länge du inte trycker på enter...

Fredrik Håkansson
Member
Medlem
Forum Posts: 8296
Member Since:
August 20, 2001
sp_UserOfflineSmall Offline
569656
March 14, 2004 - 8:05 pm
sp_Permalink sp_Print

Jo... problemet är bara det att den inte börjar loopa förens jag trycker på enter...

Avatar
dae
Kommer du hit ofta?
Medlem
Forum Posts: 410
Member Since:
July 28, 2003
sp_UserOfflineSmall Offline
569658
March 14, 2004 - 8:07 pm
sp_Permalink sp_Print

Nej, eftersom du har
int Key = getch();
några rader innan loopen.

Fredrik Håkansson
Member
Medlem
Forum Posts: 8296
Member Since:
August 20, 2001
sp_UserOfflineSmall Offline
569671
March 14, 2004 - 8:35 pm
sp_Permalink sp_Print

Hur ska jag då deklarera loopen?

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 694
Currently Online:
Guest(s) 47
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL