gpt4 book ai didi

通过函数指针的 C++ 函数方法

转载 作者:行者123 更新时间:2023-11-28 00:29:28 25 4
gpt4 key购买 nike

我试图了解函数指针的工作原理,但无法阐明为什么会出现以下错误。

#include <iostream>

using namespace std;
enum COLOR {RED,BLACK,WHITE};

class Car
{public:
Car (COLOR c): color(c) { cout<<"Car's constructor..."<<endl; CarsNum++;}
~Car () {cout<<"Car's destructor..."<<endl; CarsNum--;}
void GetColor () { cout<<"Color of the car is"<<color<<endl;}
static int GetCarsNum () {cout<<"Static membet CarsNum="<<CarsNum<<endl; return 0;}
private:
COLOR color;
static int CarsNum;

};

int Car::CarsNum=0;

int main()
{
int (Car::*pfunc) () = NULL;
pfunc=&Car::GetCarsNum ();


Car *ptr= new Car(RED);
ptr->GetColor ();
ptr->GetCarsNum ();
delete ptr;
ptr=0;
Car::GetCarsNum();
return 0;
}

错误信息:

main.cpp|23|error: lvalue required as unary '&' operand

问题在于:

  pfunc=&Car::GetCarsNum ();

任何帮助将不胜感激

最佳答案

使用 &Car::GetCarsNum () 调用 GetCastNum,并获取返回值使其成为指针(使用地址运算符 & )。

要解决这个问题,只需删除括号:

pfunc=&Car::GetCarsNum;

关于通过函数指针的 C++ 函数方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23474626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com