<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]
7 svar · 482 visningar · startad av SPiN
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?
Använder Borland, om det har med det att göra...
<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]
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.
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;
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
}
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.
Det hjälpte inte heller, så jag har nu gjort om mina filer... Nu verkar det funka
Tack för hjälpen, ivf!
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?