[英]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_str
和max_str
而不是min
和max
在變量名中使用最后一個下划線也是一個很愚蠢的主意。 即使某些白痴是眾所周知的,也不要復制他們的行為。
您的參數稱為min_str
和max_str
,但是在下面的代碼中您不使用它們,而是使用min
和max
。 這些大概是min_
和max_
屬性的max_
劑,因此當編譯器看到它們時,它會抱怨您在引用成員函數而不調用它們。
看起來您有min
和max
作為類的成員函數。
將代碼更改為:
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.