簡體   English   中英

如何在 class 成員初始化中使用升壓累加器 quantile_probability?

[英]How can I use boost accumulator quantile_probability inside a class member initialization?

Boost Accumulator 有一個不幸的怪癖,其中 api 接口在 class 內部使用時表現不同。

我正在嘗試在 class 內部使用 Boost Accumulator quantile_probability 但我不知道如何使其工作。

此問題與此問題類似: Can boost accumulators be used as class members

  #include <boost/accumulators/accumulators.hpp>
  #include <boost/accumulators/statistics/stats.hpp>
  #include <boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp>
  #include <boost/accumulators/statistics/weighted_p_square_quantile.hpp>
  #include <boost/accumulators/statistics/parameters/quantile_probability.hpp>

  namespace ba = boost::accumulators;

  typedef ba::accumulator_set<int64_t, ba::stats<ba::tag::weighted_p_square_quantile>, int64_t> accumulator_t;

  struct Foo {
      accumulator_t myAcc(ba::quantile_probability = 0.90);  // Doesn't work. ERROR: ‘ba::quantile_probability’ is not a type
  };

  accumulator_t acc(ba::quantile_probability = 0.90);   // I just fine!

accumulator_t myAcc(中的左括號被解析為成員 function,在這種情況下,這是定義一個 function 采用ba::qunatile_probability類型的變量。但這不是一個類型,所以它失敗了。

您需要使用={編寫初始化程序,或將其寫入構造函數的初始化程序列表

struct Foo {
    // One of these
    accumulator_t myAcc = accumulator_t(ba::quantile_probability = 0.90);

    accumulator_t myAcc{ba::quantile_probability = 0.90};
    
    accumulator_t myAcc;
    Foo() : myAcc(ba::quantile_probability = 0.90) {}
};

暫無
暫無

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

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