我在C++中实现Node类作为分配。
类(class) :
#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
成员。
关于c++ - 做std::pair a custom class的第二个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61563013/