我正在用C++实现一个Node类,作为一个任务。
这个类是.Node类。
#pragma once
#include <iostream>
class Node {
size_t id;
std::pair<size_t, Node> dist;
public:
//Node();
//Node(const size_t);
Node(const size_t, const std::pair<size_t, Node>);
Node(const Node&);
//std::pair<const bool, const std::string> setId(size_t);
//std::pair<const bool, const std::string> setDist(std::pair<size_t, Node>);
//void operator=(const Node&);
};
Node::Node(const size_t nodeId, const std::pair<size_t, Node> distanceFromPreviousNode) : id(nodeId), dist(distanceFromPreviousNode) { }
Node::Node(const Node& node) {
try {
id = node.id;
dist = node.dist;
throw std::string("Could not set the id and distance to given value");
}
catch (std::string exception) {
std::cerr << exception;
exit(1);
}
}
我保证所有的功能都已经在该类中实现了。node.cpp
文件。
然而,我得到以下错误std::pair<size_t, Node>::second uses undefined class 'Node'
我完全不知道这个错误要我做什么,为什么会出现这种情况。intellisense
是没有检测到它.哦,也是。ctor
正在生成它(至少,那是错误信息指向的行号)。
std::pair<size_t, Node> dist;
这个成员声明要求 Node
是在声明时完全定义的,但它不是。这就是错误告诉你的。
另外,你想做的事情是不可能的。的实例的内存布局应该是什么?Node
样子?一个实例 Node
拥有 dist
成员,它本身有一个成员的 Node
类型,它有一个 dist
成员等。这就需要无限的内存。
它允许有一个 Node*
在内 Node
如果这将有助于。