簡體   English   中英

c++類成員變量作為非類型模板參數,如何使用?

[英]c++ class member variable as a non type template argument, and how to use it?

我有以下用例,

struct Trans {
         double price;
};
struct Quote {
    double bid_price_1;
    double ask_price_1;
};
template<typename DataT, double DataT::*ptr>
class Return {
public:
    void operator()(DataT& data) {
        // print out the right field of the right class
        //std::cout << &DataT::ptr << std::endl;
    }
};
int main() {
    Quote quote {1, 2};
    Return<Quote, &Quote::bid_price_1> ret;
    ret(quote);
}

Return類的operator中,我希望能夠引用正確類的正確成員變量,我已經閱讀了以下帖子( 指向類成員作為模板參數的指針),但似乎沒有提到如何檢索成員變量部分。 我想知道檢索編譯時指定的成員變量的正確語法是什么。

尋址成員的語法使用運算符.* (用於引用)和->* (用於指針)。 在你的情況下

void operator()(DataT& data) {
    std::cout << data.*ptr << std::endl;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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