C ++ - пустой конструктор класса шаблона не инициализирует значение - PullRequest
0 голосов
/ 25 января 2020

У меня есть 2 конструктора в моем собственном шаблонном классе. Одним из них является пустой конструктор, который инициализирует значение равным 0. В другом конструкторе вы можете передать значение, которое инициализирует значение для этого переданного значения. Если я использую пустой конструктор для создания экземпляра этого класса, он не распознает значение. Почему это так и как мне сделать это правильно?

#include <iostream>


template <typename T>
class A {
protected:
    T value;

public:
    A()
    : value(0)
    {};

    A(T value)
    : value(value)
    {};

    ~A ()
    {};

    T get_value()
    {
        return value;
    }
};


int main(int argc, char* argv[])
{
    A<double> a(3);
    A<double> b();
    std::cout << a.get_value() << std::endl; // 3
    std::cout << b.get_value() << std::endl; // error: request for member 'get_value' in 'b', which is of non-class type 'A<double>()' std::cout << b.get_value() << std::endl;
    return 0;
}

Ответы [ 2 ]

0 голосов
/ 25 января 2020

b должно быть выделено таким образом, без паренов:

A<double> b;
0 голосов
/ 25 января 2020

просто измените

A<double> b();

на

A<double> b;

, если вы не используете (), тогда он просто использует значение по умолчанию конструктор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...