BitNeBolt
@BitNeBolt

Почему возникает эта ошибка?

Если создать объект класса Node, указав значения полей, то вылетят ошибки:
  • error: expected identifier before 'nullptr'
  • error: expected ',' or '...' before 'nullptr'

Вот сама программа (не весь класс BinaryTree):
#include <iostream>

using namespace std;

template <typename T>
class BinaryTree
{
private:
    struct Node
    {
        T data;
        Node *left, *right;

        Node(T data=T(), Node *left=nullptr, Node *right=nullptr)
        {
            this->data = data;
            this->left = left;
            this->right = right;
        }
    };

    Node root(T(), nullptr, nullptr);
};

int main()
{

}


Почему при указании значений возникают ошибки, а без этого - нет?
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
@MarkusD Куратор тега C++
все время мелю чепуху :)
Согласно 14му стандарту, у тебя есть два способа инициализации поля по месту объявления:
Способ первый, принятый начиная с C++11:
Node root = {T{}, nullptr, nullptr};
Способ второй, принятый начиная с C++14:
Node root{T{}, nullptr, nullptr};

Твой текущий код инициализации поля синтаксически неверен.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы