Frank Castle
28-12-2003, 10:29
Sono sicuro che sia una cavolata, ma di quelle che cavolate che detesto perchè fanno perdere un bel po' di tempo :rolleyes:
Vorrei sapere cosa significa questo errore: me lo dà nel costruttore, ma se commento il costruttore poi inizia a darmelo per tutte le funzioni in cascata praticamente :D
sly@sid:~/programming/C++/classi/10$ g++ -g -Wall polimorf.cc -o polimorf
polimorf.cc:7: ISO C++ forbids defining types within return type
polimorf.cc:7: return type specification for constructor invalid
Questo è il codice (la riga 7 è quella di dichiarazione del costruttore, per la precisione coincide con la graffa d'apertura):
File di intestazione
#ifndef LAVORATORE_H
#define LAVORATORE_H
// Classe base astratta
class Lavoratore{
public:
Lavoratore(const char *, const char *);
virtual ~Lavoratore(); //distruttore virtuale
const char* getNome() const;
const char* getCognome() const;
virtual int getPaga() const = 0; //virtuale pura
virtual void print() const; //virtuale
private:
char* nome;
char* cognome;
};
#endif
[...]
File polimorf.cc
#include <iostream>
using namespace std;
#include <cstring>
#include <cassert>
#include "polimorf.h"
Lavoratore::Lavoratore( const char *nm, const char *cgnm){
nome = new char[strlen(nm)+1];
assert(nome!=0);
strcpy(nome,nm);
cognome = new char[strlen(cgnm)+1];
assert(cognome!=0);
strcpy(cognome,cgnm);
}
[...]
Grazie ;)
Vorrei sapere cosa significa questo errore: me lo dà nel costruttore, ma se commento il costruttore poi inizia a darmelo per tutte le funzioni in cascata praticamente :D
sly@sid:~/programming/C++/classi/10$ g++ -g -Wall polimorf.cc -o polimorf
polimorf.cc:7: ISO C++ forbids defining types within return type
polimorf.cc:7: return type specification for constructor invalid
Questo è il codice (la riga 7 è quella di dichiarazione del costruttore, per la precisione coincide con la graffa d'apertura):
File di intestazione
#ifndef LAVORATORE_H
#define LAVORATORE_H
// Classe base astratta
class Lavoratore{
public:
Lavoratore(const char *, const char *);
virtual ~Lavoratore(); //distruttore virtuale
const char* getNome() const;
const char* getCognome() const;
virtual int getPaga() const = 0; //virtuale pura
virtual void print() const; //virtuale
private:
char* nome;
char* cognome;
};
#endif
[...]
File polimorf.cc
#include <iostream>
using namespace std;
#include <cstring>
#include <cassert>
#include "polimorf.h"
Lavoratore::Lavoratore( const char *nm, const char *cgnm){
nome = new char[strlen(nm)+1];
assert(nome!=0);
strcpy(nome,nm);
cognome = new char[strlen(cgnm)+1];
assert(cognome!=0);
strcpy(cognome,cgnm);
}
[...]
Grazie ;)