关于for_each的使用

qq342634980 2011-04-04 09:56:47
class Door {
public:
void open() const {
cout << "open door horizontally" << endl;
}

void close() const {
cout << "close door horizontally" << endl;
}
};

class DoorController {
protected:
vector<Door> _doorVec;

public:
void addDoor(Door aDoor) {
_doorVec.push_back(aDoor);
}

void openDoor() const {
for_each(_doorVec.begin(), _doorVec.end(), mem_fun_ref(&Door::open));
}
};

void main() {
DoorController dc;
dc.addDoor(Door());
dc.addDoor(Door());
dc.openDoor();
}
报错'mem_fun_ref' : cannot convert parameter 1 from 'void (__thiscall Door::*)(void) const' to 'void (__thiscall Door::*)(void)'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast,是什么问题?
...全文
67 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
luciferisnotsatan 2011-04-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 laier903 的回复:]

for_each()?这个函数是自己写的吗?
[/Quote]
for_each是标准库提供的算法

楼主你用的是什么编译器?
苍蝇①号 2011-04-05
  • 打赏
  • 举报
回复
在g++下面没有问题的
qq120848369 2011-04-05
  • 打赏
  • 举报
回复
#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>
using namespace std;

class Door
{
public:
void open() const
{
cout << "open door horizontally" << endl;
}

void close() const
{
cout << "close door horizontally" << endl;
}
};

class DoorController
{
protected:

vector<Door> _doorVec;

public:
void addDoor(Door aDoor)
{
_doorVec.push_back(aDoor);
}

void openDoor() const
{
for_each(_doorVec.begin(), _doorVec.end(), mem_fun_ref(&Door::open));
}
};

int main()
{
DoorController dc;
dc.addDoor(Door());
dc.addDoor(Door());
dc.openDoor();

return 0;
}


VC2008无压力,本来就应该用const版本的。
pengzhixi 2011-04-04
  • 打赏
  • 举报
回复
vs2008 和dev-cpp都没问题
LAIER903 2011-04-04
  • 打赏
  • 举报
回复
for_each()?这个函数是自己写的吗?
無_1024 2011-04-04
  • 打赏
  • 举报
回复
发了两遍了 这个函数你自己实现的时候参数类型不统一

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧