[英]C++ - empty template class constructor does not initialize value
我的自制模板類中有 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;
}
只是改變
A<double> b();
到
A<double> b;
如果你不使用 () 那么它就使用默認的構造函數
b 應該這樣分配,沒有括號:
A<double> b;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.