У меня есть 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;
}