繁体   English   中英

如何从同一个头文件中定义2个类,而另一个类依赖于另一个类?

[英]How can I define 2 classes from the same header file, while one class depends on the other?

我目前正在尝试实现一个简单的路径寻找算法,并需要边缘和节点。 我想在一个.h和一个.cpp文件中处理它们的实现。 现在我得到错误“期望构造函数,析构函数或类型转换之前......”。

我已经尝试将两个类分成2个.h和.cpp文件,但这也没有用。 我已经尝试了很多针对该错误消息提供的解决方案,但似乎没有任何工作,我认为我现在缺少一些东西。

我的utilites.cpp文件看起来有点像

#include "utilities.h"

//Class Node
//Public

using namespace std;

Node::Node(string name)
{
  this->name = name;
}

//Class Edge
//public

Edge::Edge(Node::Node nSource, Node::Node nTarget, int weight)
{
  this->nSource = nSource;
  this->nTarget = nTarget;
  this->weight = weight;
}

和我的utilities.h:

#ifndef UTILITIES_H
#define UTILITIES_H

#include <string>
#include <list>

class Node
{
public:
  Node(std::string);
  std::string name;
};


class Edge
{
public:
  Edge(Node, Node, int);
  Node nSource;
  Node nTarget;
  int weight;
};

#endif /* end of include guard: UTILITIES_H */

如果我只使用类节点,一切正常。 但是,如果我想使用类节点实现Class Edge,我将得到前面提到的错误。 我认为这很容易解决,但我无法弄明白。

我应该说我已经试过了

Edge::Edge(Node nSource, Node nTarget, int weight)
{
  this->nSource = nSource;
  this->nTarget = nTarget;
  this->weight = weight;
}

但这只是给了我错误“没有匹配函数调用'Node :: Node()'

问题是我在Node的默认构造函数之后缺少花括号

Node(){};

现在它按预期工作。 感谢您的回答,他们让我再次看到默认构造函数...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM