我有一个名为Tree的类,具有三个实例变量,分别称为board(Board),root(Node)和end(Point)。此外,它具有六个参数的构造函数。我想在构造函数中创建对象,并将其分配给引用(实例变量)。
当我尝试分配根目录时,出现function "Node::operator=(const Node &)" (declared implicitly) cannot be referenced -- it is a deleted function
错误。
我做了一些研究,似乎您必须在构造函数初始化程序中构造引用变量,但是我无法弄清楚在不更改参数的情况下如何做。我知道(inda)初始化器是如何工作的,但是问题出在构造函数块中。我想在块中创建对象并进行分配,因为在不将参数更改为对象本身的情况下,我无法直接使用初始化程序。如果这段代码是Java,那么它将起作用。
/* HEADER FILE */
class Tree {
public:
Tree(int boardHeight,int boardWidth,int knightStartXPosition,int knightStartYPosition,int knightEndXPosition,int knightEndYPosition);
private:
Board& board; // Board has int height and int width.
Node& root; // Node has location (Point) and end (Point)
Point& end; // A point is a plane vector of x and y.
void jumpNodes(Node* node); // not used yet
};
/* IMPLEMENTATION FILE */
Tree::Tree(int boardHeight,int knightEndYPosition) {
Point start = Point(knightEndXPosition,knightEndYPosition);
Point end = Point(knightStartXPosition,knightStartYPosition);
Node root = Node(start,end);
this->board = Board(boardHeight,boardWidth);
this->root = root; // this line gives the error
this->end = end;
};
预期的解决方案是构造函数使用给定的参数,但是如果不可能,则需要输入和构造。