Jeg får denne fejlmeddelse c:\..\project 1\datalag.cpp: In method `Butik::Butik(basic_string<char,string_char_traits<char>,__default_alloc_template<false,0> >)':
Jeg er enig med segmose i at det ikke ser ud som særlig praktisk kode. Men jeg blev lidt nysgerrig, og prøvede følgende:
Butik::Butik(string n) { vector<Vare> varetemp; // Bemærk, ikke en pointer varer = varetemp; }
og det giver (i hvert fald med g++) samme fejl. Jeg har ikke haft tid til at kigge nærmere på det, men synes det ser interessant ud. Særlig fordi jeg også har prøvet
int main() { vector<int> a; vector<int> b; a = b; return 0; }
Jeg kunne tænke mig at det var noget copy constructor/destructor, den der string i Vare kræver vist en copy constructor, men vectoren skulle vel være tom så man ikke har behov for disse før man reelt kommer nogle Vare i? (nu er STL ikke min stærke side) I olennert's exemple er der en klar forskel mellem simple type der ikke kræver noget speciel, men med komplekse typer kræves noget mere.
class Butik { private: string navn; vector <vare> *varer; // ændret fra butik til vare, da jeg ikke går ud fra at du vil have en butik med Butikker i. Pointer til vector. public: Butik();//Constructor. Butik(string n);//Constructor overloaded. ~Butik();//Destructor string toString(); SetUp(int elements = MINSIZE); }; Butik::SetUp(int elements) { varer = new vector<Vare>(elements); // Allokker plads til elements til at starte med. } Butik::Butik(){ SetUp() } Butik::Butik(string n){ SetUp(); varer->push_back(new Vare(n)); // Opret butik med en vare??? eller navn = n; // Opret Butik med navn n } Butik::~Butik() { delete[] varer; }
Synes godt om
Ny brugerNybegynder
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.