簡體   English   中英

C++ - 空模板類構造函數不初始化值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM