显式调用括号前的表达式必须具有(指针指向)函数类型

S.y*_*yao 6 c++ c++11

我正在vs2015社区上学习C ++模板,这是我的代码,我想定义一个模板类并在函数中调用成员main()函数。

template <typename T>
class Arithmetic {
    T _a;
    T _b;
    Arithmetic() {};
public
    Arithmetic(T a, T b) :_a(a), _b(b) {};
    T max const() { return _a + _b; };
    T minus const() { return _a - _b; };
};

int main() {
    Arithmetic<int> ar(5,6);
    cout << ar.max() << endl;
}
Run Code Online (Sandbox Code Playgroud)

生成此程序时,在最后一行出现错误。它说:

显式调用括号前的表达式必须具有(指针指向)函数类型

我该怎么办?

小智 6

对于其他任何人,这也可能是因为重新定义了方法或属性名称。即属性和方法可能具有相同的名称

  • 或者只是在属性名称后使用“()”。 (8认同)

sri*_*irt 5

该错误表示尝试调用未定义为函数的函数 max()。将 const 关键字之后的括号更改为标识符 max 之后:

T max const()...
Run Code Online (Sandbox Code Playgroud)

到

T max() const ...
Run Code Online (Sandbox Code Playgroud)


Mik*_*CAT 2

  • 添加所需的标头包含和using
  • 添加:后public
  • 移动const到合适的位置
#include <iostream>
using std::cout;
using std::endl;

template <typename T>
class Arithmetic {
    T _a;
    T _b;
    Arithmetic() {};
public:
    Arithmetic(T a, T b) :_a(a), _b(b) {};
    T max() const { return _a + _b; };
    T minus() const { return _a - _b; };
};

int main() {
    Arithmetic<int> ar(5,6);
    cout << ar.max() << endl;
}
Run Code Online (Sandbox Code Playgroud)