网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
02月27日漏签0天
c++吧 关注:653,300贴子:2,117,986
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 24回复贴,共1页
<<返回c++吧
>0< 加载中...

error: ‘a’ was not declared in this scope

  • 只看楼主
  • 收藏

  • 回复
  • dgui1
  • throw
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
新手学c++, 想定义一个返回函数的指针 的容器, 编译遇到了这个问题实在想不明白, 函数的形参怎么变成未申明了
下面有源码,大佬们可以给点提示 不甚感激



源码: common.h
#ifndef COMMON_H
#define COMMON_H
#include <iostream>
#include <string>
#include <cstring>
#include <cctype>
#include <cstdlib>
#include <vector>
#include <iterator>
using std::cin;
using std::cout;
using std::endl;
using std::cerr;
using std::string;
using std::vector;
int (*p) (int, int);
int (*pt) (int, int, char);
int *data;
using PF = int (*) (int, int);
using PP = int (int, int);
#endif
源码: 02.cpp
#include "../common.h"
int (*p1) (int a, int b) {
*data = a + b;
return data;
}
int (*p2) (int a, int b) {
*data = a - b;
return data;
}
int (*p3) (int a, int b) {
*data = a * b ;
return data;
}
int (*p4) (int a, int b) {
if (b == 0) return 0;
*data = a/b;
return data;
}
int main(){
vector<decltype(PF)> data1 {p1, p2, p3, p4};
// vector<decltype(PP)> data2 {pp1, pp2, pp3, pp4};
cout << data1.size() << endl;
// cout << data2.size() << endl;
return 0;
}


  • 435qb
  • |
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你这个是函数的定义,不是函数指针的定义啊


2026-02-27 11:32:38
广告
不感兴趣
开通SVIP免广告
  • zla0402
  • ^
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
返回值你把一个整型赋值给了指针


  • dgui1
  • throw
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
改了后还是有问题, 变成这样了 @轩辕635 看到别人有这个问题都是语法写错什么的,我这也没写错啊


附修改后的源码:
#include "../common.h"
int (*p1) (int a, int b) {
return a + b;
}
int (*p2) (int a, int b) {
return a-b;
}
int (*p3) (int a, int b) {
return a*b;
}
int (*p4) (int a, int b) {
if (b == 0) return 0;
return a/b;
}
int main(){
vector<decltype(PF)> data1;
data = p1;
data1.push_back(data);
data = p2;
data1.push_back(data);
data = p3;
data1.push_back(data);
data = p4;
data1.push_back(data);
cout << "data1's size:" << data1.size() << endl;
return 0;
}


  • RoteAugen
  • &&
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你可能需要先梳理一下你具体想实现的内容。我理解的你的想法是:"data1容器中存放若干函数指针,其中每一个指针指向一个返回int指针的函数"。这样的话,p1应该定义成int* p1(...),而不是int (*p1)(...)。


  • dgui1
  • throw
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
圆满解决, 感谢各位大佬支持 c++好像不支持 函数指针的定义
例:
int (*p) (int a, int b) {return a + b;} // 错误


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 24回复贴,共1页
<<返回c++吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示