C++ - 空模板 class 构造函数未初始化值

C++ - empty template class constructor does not initialize value

我自制的模板中有2个构造函数class。一个是空构造函数,它将值初始化为 0。在另一个构造函数中,您可以传递一个值,它将值初始化为这个传递的值。如果我使用空构造函数创建此 class 的实例,它无法识别该值。为什么会这样,我应该如何正确执行此操作?

#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;
}

只是改变

A<double> b();

A<double> b;

如果你不使用 () 则它只使用默认构造函数

b 应该这样分配,没有括号:

A<double> b;