为什么c++类的成员函数getxxx获得的数不能用操作符进行运算

自己拿示例代码改的

//构造函数、析构函数、和range()都在类的内部定义(内联函数,inline)
//将类的三个字段全部设置为私有变量
//添加存取函数用于获得三个私有变量的值

#include <iostream> 
using namespace std; 

//定义Vehicle类
class Vehicle {  
  int passengers; // number of passengers  
  int fuelcap;    // fuel capacity in gallons 
  int mpg;        // fuel consumption in miles per gallon 
public: 
  // This is a constructor for Vehicle. 
  Vehicle(int p, int f, int m) { 
    passengers = p; 
    fuelcap = f; 
    mpg = m; 
  } 

  // Compute and return the range. 
  int range() { return mpg * fuelcap; } 

  // Accessor functions. 
  int get_passengers() { return passengers; } 
  int get_fuelcap() { return fuelcap; } 
  int get_mpg() { return mpg; } 
}; 

int main() {  
  // Pass values to Vehicle constructor. 
  Vehicle minivan(7, 16, 21);  
  Vehicle sportscar(2, 14, 12); 
   if(&minivan.get_passengers*2)  //这一行是我修改了的部分
       printf("1");

  return 0; 
}

会报错error: invalid operands of types 'int (Vehicle::*)()' and 'int' to binary 'operator*'。
他们不都是int吗,为什么不能计算

唔:1是你调用函数后面要加括号吧
get_passengers*2
改为
get_passengers()*2
才是正常调用
有帮助的话采纳一下(捂脸)

调用类里面的函数写法要加括号,minivan.get_passengers要写成minivan.get_passengers()
望采纳

首先,你调用一个函数,虽然没有参数,但是括号不能省略
其次,&作为位运算符,是二元的,前面少了一个表达式,作为取地址运算符,你需要一个变量,而不能直接对函数调用取
两种修改方式:
if(另一个变量&minivan.get_passengers()*2)
或者
int result = minivan.get_passengers()*2
if (&result == xxx)
...