c++ - C++ 'class'尚未声明-将类传递给类

标签 c++ class parameters compiler-errors

因此,目前我正在尝试通过从main.cpp传递<translator>类的实例,在<bintree>类中运行方法。以下是我的代码,下面是我收到的错误。我确定我只是缺少传递参数的某些方面,但是对于我的一生,我无法弄清楚。

main.cpp(创建二叉树和传递二叉树的区域)最相关

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.
     }
  }

我正在通过translator.h接收它(编辑:它知道morseNode的const)
#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不是我的,它是提供的。起始声明如下。它很长,因此功能本身对于此问题并不重要,因此我将不包括它们。
#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:
       //....
    };
}

我收到的错误是:
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)

在此先感谢您至少可以指出正确方向的人:)

最佳答案

使用using namespace treespectreespc::bintree为bintree指定 namespace

#ifndef TRANSLATOR_H
#define TRANSLATOR_H

#include <string>
#include <iostream>
#include <list>

#include "bintree.h"

using namespace std;

class translator
{
private:
  string outName;
  list<char> morseOutput;
public:
  void morseToEngTranslation(list<char> &myList,  treespc::bintree<morseNode> &myTree)
{
    //functions here.. seemed irrelevant as i just wanted to show how i am
    //receiving the parameters
}
};
#endif

关于c++ - C++ 'class'尚未声明-将类传递给类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37562517/

相关文章:

parameters - 如何获取依赖于 Hudson 或 Jenkins 中的其他参数的参数

C++ 使用复制显示成对 vector

c++ - 拖动时保持窗口事件(Win32 上的 SDL)

java - “找不到或加载主类”是什么意思?

C++ 难以在单例类中创建类的实例

python - 在 Python 中引用类

function - 在 AutoIT 中将函数作为参数传递

c++ - 断点未命中静态链接库中的全局静态初始化类

c++ - 从 C++ 中的套接字开始

javascript - 在 html 表单中存储和加载选定元素的正确方法是什么?