webForumDet fria alternativet

Vektorer och klasser.

C/C++

7 svar · 446 visningar · startad av SPiN

Medlem sedan mars 20007 896 inlägg
Frågan#1

Hej!

Nu är jag förvirrad, kan jag inte göra så här?

#ifndef CHANDLER_H
#define CHANDLER_H

typedef vector<string> SVECTOR;

class CHandler {
        private:
                char* filename;
                SVECTOR namn;
                SVECTOR email;
        public:
                CHandler(const char* file);
                void Add(const char* nyttnamn, const char* nyemail);
                void Save();
                void Show();
};

#endif

På raden typedef vector<string> SVECTOR får jag felmeddelandet , expected och så får jag type name expected på raden SVECTOR namn och SVECTOR email.

Vad är det som är fel? :q
Använder Borland, om det har med det att göra...

------------------
SPiN, bjorne.w@telia.com

-- Man vinner inte silver, man förlorar guld --

[Redigerat av SPiN den 25 nov 2001]

Medlem sedan apr. 20002 487 inlägg
#2

<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
#define SVECTOR vector<string>

?

[r] :r

------------------
"If God had wanted you to wear earrings, he'd have made you a girl." - Alabama Governor Don Siegelman :e

[Redigerat av Muzzafarath den 25 nov 2001]

Medlem sedan mars 20007 896 inlägg
#3

Hmm, ett felmeddelande försvann, dvs. det på raden med typedef. Men jag kan ändå inte deklarera några variabler med SVECTOR utan att få ett type name expected-felmeddelande.

------------------
SPiN, bjorne.w@telia.com

-- Man vinner inte silver, man förlorar guld --

Medlem sedan apr. 20003 971 inlägg
#4

Det är inget fel på din kod. Muzzafarath har däremot förväxlat ordningen.

Har du inkluderat string och vector samt använt namnuntrymmet std?

#include <vector>
#include <string>
using namespace std;

------------------
- Swey
Med reservation för upprörda känslor.

Medlem sedan mars 20007 896 inlägg
#5

Japp, det har jag gjort. Jag har en header-fil med klassen, där inkluderas ju inga filer, sedan en definitionsfil där alla definitioner och inkluderingar finns.

Förutom ovanstående kod, som förresten ligger i CHandler.h, har jag denna:

#include <fstream>
#include <vector>
#include <cstring>
#include <string>
#include "CHandler.h"
using namespace std;

CHandler::CHandler(const char* file) {
        // Här händer det nåt
}

void CHandler::Add(const char* nyttnamn, const char* nyemail) {
        namn.push_back(string(nyttnamn)); // Lägg till ett namn i listan
        email.push_back(string(nyemail)); // Lägg till en email i listan
}

void CHandler::Save() {
        // Här händer det nåt
}

void CHandler::Show() {
        // Här händer det nåt
}

------------------
SPiN, bjorne.w@telia.com

-- Man vinner inte silver, man förlorar guld --

Medlem sedan sep. 20001 124 inlägg
#6

Suck. Du har gjort ett löjligt litet fel som ger dig detta uppträdande. Fixen är mycket enkel. Här är den viktiga sektionen:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">#include <string>
#include "CHandler.h"
using namespace std;
Byt plats på de två raderna längst ner. Det du EGENTLIGEN skulle ha gjort är att inkludera alla filer som behövs för header-filen i just header-filen.

------------------
Hollowhead - levererar din dagliga dos av nyttig hårdrock!

Medlem sedan mars 20007 896 inlägg
#7

Det hjälpte inte heller, så jag har nu gjort om mina filer... Nu verkar det funka :)

Tack för hjälpen, ivf!

------------------
SPiN, bjorne.w@telia.com

-- Man vinner inte silver, man förlorar guld --

Medlem sedan mars 20007 896 inlägg
#8

Halloj igen!

Hur överlagrar jag cin.getline() med en funktion i en egen klass? Jag har prövat så här:

<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
friend istream & getline(istream & i, MinStringKlass & str, int length, char delimiter) {
    char* in = new char[length + 1];

    i.getline(in, length, delimiter);
    if(i)
      str.set(in);

    delete [] in;

    return i;
}

Det här känns inte rätt. Gör jag så här?

------------------
SPiN, bjorne.w@telia.com

-- Man vinner inte silver, man förlorar guld --

331 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
195 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
196 ms — ändringar (db)