必须调用非静态成员函数
Non-static member function must be called
在64位Mac w/-std=gnu++0x上编译会出现以下错误:
.../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
和max
,而是min_str
和max_str
在变量名中使用最后一个下划线也是一个非常愚蠢的想法。不要模仿一些白痴的行为,即使他们是众所周知的。
看起来你有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);
}
您的参数称为min_str
和max_str
,但在下面的代码中您不使用它们,而是使用min
和max
。这些大概是min_
和max_
属性的getter,所以当编译器看到它们时,它会抱怨你引用了成员函数而没有调用它们。
相关文章:
- 如何在C++中使用非静态成员函数作为回调函数
- 静态成员函数使用相同的名称时出现模板类型名称错误
- 在 nullptr 上调用无状态类的非静态成员函数是否合法?
- 为什么传递非静态成员函数会导致编译错误?
- 处理类内的回调时,必须调用对非静态成员函数的引用
- 非静态成员函数的 decltype 格式不正确吗?
- std::异步与非静态成员函数
- C++无效使用非静态成员函数?
- 未使用的C++未优化的静态成员函数/变量
- C++:如何返回指向非静态成员函数的指针?
- 使用静态成员函数而不是普通函数是否有任何开销?
- 在 stream_descriptor::async_wait 中无效使用非静态成员函数
- 为什么我不能像这样在静态成员函数中调用静态成员变量?
- 无法在clang Linux中分配非静态成员函数,但我可以在Visual Studio Windows中分配
- 在类定义中推导内联静态成员函数的返回类型
- `enable_if()`以禁用模板化类的静态成员函数声明
- 错误:无效使用非静态成员函数"int test::hotplug_callback(libusb_contex
- 常量静态成员函数
- 使用 vector.sort() 的非静态成员函数无效使用
- 从静态成员函数访问私有非静态类变量 - C++