Inconnue nom du type d'erreur
Je suis sûr que c'est quelque chose d'évident, mais je ne peux pas le voir: xcode est tout à coup de me donner toutes sortes d'erreurs lorsque j'essaie d'utiliser mon Note
classe (ce qui est très souvent utilisé).
Voici ce que l'en-tête de classe ressemble à:
class Note : public Playable{
private:
public:
double theta;
double frequency;
int duration;
int startTime; //tussen 1 en 32
int measureNumber;
float velocity;
Playable *track;
virtual float getValue();
static double calculateNoteFrequency(int aOctaveNumber, note_name aNoteName);
Note(double aFreq, float aVelocity, int aDuration, int aMeasureNumber, int aStarttimeInsideMeasure, Playable *aTrack){
// theta = 0;
Note();
frequency = aFreq;
duration = aDuration;
velocity = aVelocity;
measureNumber = aMeasureNumber;
startTime = aStarttimeInsideMeasure;
track = aTrack;
}
Note(){
theta = 0;
}
void toString();
};
MODIFIER
Voici le message d'erreur du compilateur complet:
In file included from /Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Note.cpp:9:
In file included from /Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Note.h:14:
In file included from /Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Track.h:16:
/Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Pattern.h:19:12: error: use of undeclared identifier 'Note'
vector<Note> notelist;
^
/Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Pattern.h:19:18: error: C++ requires a type specifier for all declarations
vector<Note> notelist;
^~~~~~~~
/Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Pattern.h:23:12: error: use of undeclared identifier 'Note'
vector<Note> getNotelist();
^
/Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Pattern.h:23:18: error: C++ requires a type specifier for all declarations
vector<Note> getNotelist();
^~~~~~~~~~~
/Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Pattern.h:24:18: error: unknown type name 'Note'
void addNote(Note const ¬e){
^
/Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Pattern.h:24:23: error: expected ')'
void addNote(Note const ¬e){
^
/Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Pattern.h:24:17: note: to match this '('
void addNote(Note const ¬e){
^
In file included from /Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Note.cpp:9:
In file included from /Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Note.h:14:
In file included from /Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Track.h:17:
In file included from /Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Synth.h:11:
/Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Oscillator.h:21:18: error: unknown type name 'Note'
void setNote(Note &aNote);
^
/Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Oscillator.h:23:20: error: unknown type name 'Note'
float getValue(Note ¬e);
^
In file included from /Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Note.cpp:9:
In file included from /Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Note.h:14:
In file included from /Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Track.h:17:
/Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Synth.h:47:21: error: unknown type name 'Note'
float getSample(Note ¬e);
^
In file included from /Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Note.cpp:9:
In file included from /Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Note.h:14:
/Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Track.h:30:17: error: use of undeclared identifier 'Note'
multimap<long, Note> noteList;
^
/Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Track.h:30:23: error: C++ requires a type specifier for all declarations
multimap<long, Note> noteList;
^~~~~~~~
/Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Track.h:33:2: error: unknown type name 'Note'
Note &addNoteAndReturnReference(Note ¬e);
^
/Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Track.h:33:34: error: unknown type name 'Note'
Note &addNoteAndReturnReference(Note ¬e);
^
/Users/osxursnm/Development/SynthSequencer2/SynthSequencer2/Track.h:34:18: error: unknown type name 'Note'
void removeNote(Note ¬e);
^
14 errors generated.
Vous devez ajouter votre compilateur message d'erreur (le message) et le code réel, afin que nous puissions vous aider
J'ai posté le compilateur de code de message
Je suppose que vous avez une erreur dans votre Note.h fichier. Vérifiez que vous n'avez pas oublier un point-virgule, peut-être à la fin de votre classe?
Ce n'est pas ça, j'ai mis à jour ma question à la Note.h source
Beaucoup d'erreurs se référer à Motif.h; à quoi cela ressemble?
J'ai posté le compilateur de code de message
Je suppose que vous avez une erreur dans votre Note.h fichier. Vérifiez que vous n'avez pas oublier un point-virgule, peut-être à la fin de votre classe?
Ce n'est pas ça, j'ai mis à jour ma question à la Note.h source
Beaucoup d'erreurs se référer à Motif.h; à quoi cela ressemble?
OriginalL'auteur | 2012-11-01
Vous devez vous connecter pour publier un commentaire.
Ma conjecture est que vous avez un recoupement problème.
Dans
Note.h
vous d'inclureTrack.h
qui utilise un objet de typeNote
. Utiliser une déclaration anticipée pourNote
dans leTrack.h
fichier et inclure leNote.h
fichier uniquement enTrack.cpp
.Donc, essayez avec
avant la déclaration de la classe
Track
dans leTrack.h
fichier et supprimer les#include "Note.h"
déclaration au début du fichier.Cela semble résoudre le problème de la Piste de la classe mais il semble que je vais avoir besoin de faire cela pour plusieurs classes. Toute idée de ce que peut être la cause? Je suis en utilisant
#ifndef
pour chacune de mes classes, et cela n'a pas commencer à se produire jusqu'à ce que quelques heures. Merci pour votre aide!vous avez des dépendances circulaires entre les fichiers d'en-tête: quand le compilateur traite
Note.h
, il trouve le comprennent deTrack.h
, puis il commence le traitementTrack.h
et trouve un objet de typeNote
, il ne le sait pas encore! En utilisant les gardes ne l'aide pas dans ce cas. Malheureusement, lorsque cette dépendance circulaire problème se pose beaucoup de temps, c'est le signe que votre conception doit être revisité.OriginalL'auteur Vincenzo Pii