我正在C++中实现一个 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*
成员。