自己拿示例代码改的
//构造函数、析构函数、和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)
...