2009-02-23, 22:07
  #1
Medlem
Hur gr jag fr att skapa en array av storlek x nr ett nytt objekt skapas?
Som det r nu matar anvndaren in ett namn och sedan skapas ett objekt.

Jag vill skapa en tom array (inte vector) med en storlek som anvndaren anger. Storleken ska kunna vara olika fr de olika objekten.
Senare under programmet lter jag anvndaren mata in vrden som sparas i arrayen i ett valt objekt.
Jag har ingen aning om hur jag ska gra detta och jag hittar konstigt nog inga exempel nr jag sker.

Lite enkel kod. Jag skapar bara ett objekt fr att hlla det simpelt.

Apor.h
Kod:
#include <string>
class Apor
{
    private:
        std::string namn;
    public:
        Apor();
        Apor(std::string namn);
        ~Apor();
}

Apor.cpp
Kod:
#include "Apor.h"
Apor::Apor() {}
Apor::Apor(std::string namn)
{
    this->namn = namn;
}
Apor::~Apor() {}

std::string Apor:getName()
{
    return namn;
}

main.cpp
Kod:
#include "Apor.h"
#include <iostream>
void addApa(std::string);
void showApa();
void addBarn(int);
int main()
{
	int input;
    std::cout << "Ange apans namn: ";
    std::cin >> input;
	int antalBarn;	
    std::cout << "Hur mnga barn har apan?";
    std::cin >> antalBarn;
    Apor *aporna = new Apor[1];
    addApa(input, antalBarn);
    showApa();
	addBarn();	
    return 0;
}
void addApa(std::string namn, int antalBarn)
{
    aporna[0] = Apor(namn);
	// Skapa en array i det nya objektet med storleken 'antalbarn' ???
}
void showApa()
{
    aporna[0].getName();
}
void addBarn(antalBarn)
{
	int alder;
	for(int i=0; i<antalBarn; i++)
	{
		std::cin >> alder;
		// Funktion fr att lgga in ldrarna i objektets array?
	}
}
Citera
2009-02-24, 09:10
  #2
Medlem
Citat:
Ursprungligen postat av mistake08
Hur gr jag fr att skapa en array av storlek x nr ett nytt objekt skapas?
Man lter objektets konstruktor hantera det.
Kod:
class Foo {
    public:
        Foo();
        Foo(int x);
        ~Foo();
    private:
        int *mBar;
};

Foo::Foo()
{
    mBar = NULL; 
}

Foo::Foo(int x)
{
    mBar = new int[x];
}

Foo::~Foo()
{
    delete[] mBar;
}
Det beror lite p lsningen om du vill att mBar ska vara NULL eller om du vill ha den till en defaultstorlek. Vljer du att stta den till null fr du ju kolla det vid varje metod som anvnder sig utan mBar, och ha ngon metod som allokerar mBar i efterhand. Vljer du att ha en defaultsize p mBar fr du se till att det r omjligt att verskrida den, ngot som kan vara en bra id ven utan default size. En medlemsvariabel typ mBarSize som kollas varje gng ett element i mBar efterfrgas via ngon metod.
Citera
2009-02-24, 15:45
  #3
Medlem
Citat:
Ursprungligen postat av ltvix
Man lter objektets konstruktor hantera det.

Det fungerar fint. Tack!
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