Also versuche ich im Moment eine Methode innerhalb einer <translator>
Klasse zu starten, indem ich eine Instanz einer <bintree>
Klasse von meiner main.cpp übergeben. Das Folgende ist mein Code, mit dem Fehler, den ich unten bekomme. Ich bin mir sicher, dass mir nur ein Aspekt fehlt, wenn ich Parameter übergebe, aber für das Leben von mir kann ich es nicht herausfinden.C++ 'Klasse' wurde nicht deklariert - Klasse an Klasse übergeben
main.cpp (Bereich, in dem es schafft Bintree und wo es passiert ist) Unterm Strich relevanteste
if (validFile == true)
{
//Create bintree through insert. Rebalance follows
bintree<morseNode> morseTree;
for (int count = 0; count < 26; count++)
{
char letter = morseCodes[count].letter;
string code = morseCodes[count].code;
morseNode node;
node.letter = letter;
node.code = code;
morseTree.insert(node);
}
morseTree.rebalance();
translator fileTranslator(outputFile);//create instance of translator
//Read and translate files based on conversion type
if (translatorType != "e" || translatorType != "E") //English -> Morse Conversion
{
validFile = readFile(inputFile, translatorType, morseCodes, inputList);
if (validFile == true)
{
fileTranslator.engToMorseTranslation(inputList, morseCodes);
}
}
else //Morse -> English Conversion
{
validFile = readFile(inputFile, translatorType, morseCodes, inputList);
if (validFile == true)
{
fileTranslator.morseToEngTranslation(inputList, morseTree);
//Here is where it sends morseTree that is throwing ^^ the error.
}
}
ich es durch translator.h empfange (edit: es kennt die consts für morseNode)
#ifndef TRANSLATOR_H
#define TRANSLATOR_H
#include <string>
#include <iostream>
#include <list>
//I tried #include "bintree.h" here. this did not work
using namespace std;
class translator
{
private:
string outName;
list<char> morseOutput;
public:
void morseToEngTranslation(list<char> &myList, bintree<morseNode> &myTree)
{
//functions here.. seemed irrelevant as i just wanted to show how i am
//receiving the parameters
}
};
#endif
Bintree ist nicht meins, es wurde zur Verfügung gestellt. die Startanmeldungen wie folgt. Es ist sehr lang so und die Funktionen selbst sind nicht wichtig für dieses Problem, also werde ich sie nicht einschließen.
#ifndef BINTREE_H_
#define BINTREE_H_
#include <stdexcept>
namespace treespc
{
// forward class declaration
template <typename dataType> class bintree;
template <typename dataType> class binnode;
#include "const_iterator.h"
#include "binnode.h"
/********************************************************\
template class for a binary tree
\********************************************************/
template <typename dataType> class bintree
{
public:
//....
private:
//....
};
}
und die Fehler i empfangen sind:
translator.h:79:52: error: ‘bintree’ has not been declared
void morseToEngTranslation(list<char> &myList, bintree<morseNode> &myTree)
translator.h:79:59: error: expected ‘,’ or ‘...’ before ‘<’ token
void morseToEngTranslation(list<char> &myList, bintree<morseNode> &myTree)
danken Ihnen im Voraus für jeden, der mir zumindest in die richtige Richtung zeigen kann :)
http://stackoverflow.com/questions/553682/when-can-i-use-a-forward-declaration (Forward-Deklaration) –
Setzen Sie keine anderen Includes in den 'Namespace {'; Wenn Sie möchten, dass sich Zeug in einem Namespace befindet, dann setzen Sie die entsprechenden Namespace-Definitionen in den anderen Header –
Wo ist MorseNode definiert? – thorsan