【发布时间】:2020-08-17 03:42:54
【问题描述】:
我正在 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 也在生成它(至少,这是错误消息指向的行号)
【问题讨论】:
-
请提取minimal reproducible example 并将其作为您问题的一部分提供。就目前而言,您的问题是题外话。
-
std::pair<size_t, Node>(或对Node的任何其他引用,除了作为指针或引用之外)在类Node的声明中无效,因为Node是不完整的类型那一点。您将不得不考虑另一种方法。您想在这里实现什么目标? -
@PaulSanders,我正在尝试制作一个简单的
copy ctor。 -
@d4rk4ng31 使用您的类,您不需要 复制构造函数(或赋值运算符 - 零规则)。无论如何,我无法理解的是,那些
std::pair<size_t, Node>s 是为了什么?他们的目的是什么? -
@PaulSanders,
size_t基本上是长度,即距离(我知道变量名有点混乱;会改变它)和Node是距离的节点.它实际上需要是一个向量(我刚刚意识到)
标签: c++ visual-studio compiler-errors std-pair