簡體   English   中英

必須調用非靜態成員函數

[英]Non-static member function must be called

在帶有-std = gnu ++ 0x的64位Mac上進行編譯會給我以下錯誤:

.../include/utils/common_types.h:93:37: error: reference to non-static member function must be called
    bool valid_min = StringToNumber(min, &min_)
                                    ^~~
.../include/utils/common_types.h:94:43: error: reference to non-static member function must be called
        && Fraction::FromFloatPointString(min, &min_fract_);
                                          ^~~
.../include/utils/common_types.h:95:37: error: reference to non-static member function must be called
    bool valid_max = StringToNumber(max, &max_)
                                    ^~~
.../include/utils/common_types.h:96:43: error: reference to non-static member function must be called
        && Fraction::FromFloatPointString(max, &max_fract_);
                                          ^~~

它可以在32位Ubuntu上正常編譯。

  BasicRange(const std::string& min_str, const std::string& max_str)
      : min_(0),
        max_(0) {
    bool valid_min = StringToNumber(min, &min_)
        && Fraction::FromFloatPointString(min, &min_fract_);
    bool valid_max = StringToNumber(max, &max_)
        && Fraction::FromFloatPointString(max, &max_fract_);
    assert(valid_min && valid_max);
  }

我不知道如何在32位Ubuntu上編譯此代碼。

看來有效的代碼應如下所示

  BasicRange(const std::string& min_str, const std::string& max_str)
      : min_(0),
        max_(0) {
    bool valid_min = StringToNumber(min_str, &min_)
        && Fraction::FromFloatPointString(min_str, &min_fract_);
    bool valid_max = StringToNumber(max_str, &max_)
        && Fraction::FromFloatPointString(max_str, &max_fract_);
    assert(valid_min && valid_max);
  }

那必須是min_strmax_str而不是minmax

在變量名中使用最后一個下划線也是一個很愚蠢的主意。 即使某些白痴是眾所周知的,也不要復制他們的行為。

您的參數稱為min_strmax_str ,但是在下面的代碼中您不使用它們,而是使用minmax 這些大概是min_max_屬性的max_劑,因此當編譯器看到它們時,它會抱怨您在引用成員函數而不調用它們。

看起來您有minmax作為類的成員函數。

將代碼更改為:

BasicRange(const std::string& min_str, const std::string& max_str)
    : min_(0),
      max_(0) {
  bool valid_min = StringToNumber(min(), &min_)
      && Fraction::FromFloatPointString(min(), &min_fract_);
  bool valid_max = StringToNumber(max(), &max_)
      && Fraction::FromFloatPointString(max(), &max_fract_);
  assert(valid_min && valid_max);
}

暫無
暫無

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

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