Avatar billede brian0905 Nybegynder
26. maj 2003 - 21:45 Der er 2 kommentarer og
1 løsning

Initialisere en liste i en vector

Jeg er ved at lave en liste indeholdende objekter. Disse objekter skal oprettes ved load af applikationen (en object factory) efterfølgende vil jeg gerne smide alle mine objekter ind i en vector således jeg har styr på dem. Jeg har lidt problemer med at initialisere min vector og har prøvet en hel del efterhånden: dette er min header på listeobjektet:

#ifndef ADMINISTRATIONLIST_H
#define ADMINISTRATIONLIST_H

#include "Administration.h"
#include <vector>

using namespace std;

class AdministrationList
{
private:
    static int number_of_objects;
    static vector<Administration> administrationsBygninger;
public:
    AdministrationList();
    ~AdministrationList();

    void setNumberOfObjects(int newNumber);
    void addAdministrationToList(Administration newAdministration);

    int getNumberOfObjects();
    Administration getBuildingAt(int index);
    vector<Administration> getAdministration();

};

#endif

Som det umiddelbart fremgår vil jeg gerne have min vector statisk, og have nogle funktiner på klassen til almindeligt vedligehold. HEr er implementeringen af nogle af disse funktioner:

#include"AdministrationList.h"

AdministrationList::AdministrationList()
{
//administrationsBygninger=new vector<Administration>;
}

AdministrationList::~AdministrationList()
{
//destructor
}

void AdministrationList::addAdministrationToList(Administration newAdministration)
{
administrationsBygninger.push_back(newAdministration);
}


vector<Administration*> AdministrationList::getAdministration()
{
    return administrationsBygninger;
}

Jeg får følgende fejl når jeg compiler, jeg er rimelig sikker på det er return typen vector den er gal med, men jeg ved ikke hvordan jeg skal lave den...

Noget andet er at fjerner jeg de sidste liniers kode, det med return type vector, får jeg en linker fejl (som det også ses af koden har jeg eksperimenteret i blinde til sidst og prøvet på alt, helt basalt vil jeg bare gerne i ontakt med min vector og bruge den i min liste 8-) som denne :
Linking...
AdministrationList.obj : error LNK2001: unresolved external symbol "private: static class std::vector<class Administration,class std::allocator<class Administration> > AdministrationList::administrationsBygninger" (?administrationsBygninger@Administ
rationList@@0V?$vector@VAdministration@@V?$allocator@VAdministration@@@std@@@std@@A)
Debug/Prototype2.exe : fatal error LNK1120: 1 unresolved externals
Avatar billede segmose Nybegynder
27. maj 2003 - 09:20 #1
prøv at lave

vector<Administration*> AdministrationList::getAdministration() {
    return administrationsBygninger;
}

om til

vector<Administration> AdministrationList::getAdministration() {
    return administrationsBygninger;
}

Men nu returnerer du en kopi at admin... er det det du vil?

ellers

vector<Administration> * AdministrationList::getAdministration() {
    return &administrationsBygninger;
}
Avatar billede brian0905 Nybegynder
27. maj 2003 - 20:20 #2
Super, men hvordan initialiserer jeg min vector (se min constructor) er det overhovedet nødvendigt?
Avatar billede segmose Nybegynder
28. maj 2003 - 09:43 #3
Prøv at læse om add/put/insert under vector.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester