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;
我自制的模板中有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;