黑马程序员技术交流社区

标题: 能否用boost的bind实现类似于java的反射的效果? [打印本页]

作者: wht    时间: 2012-7-1 14:42
标题: 能否用boost的bind实现类似于java的反射的效果?
我想用boost的bind实现类似于java的反射的效果:
class A

{

    int a;

public:   

    A(int aa) : a(aa) {}      

    int getA() {

        return a;

    }

    void setA(int b) {

        a = b;

    }

};

int main() {

    A a1(1);

    boost::function<void(A,int)> set = boost::bind(&A::setA, _1, _2);

    boost::function<int(A)> get = boost::bind(&A::getA, _1);

    set(a1, 99);

    cout << "a1.a = " << get(a1) << endl;

}

但是这个程序输出 a1.a = 1,调用set(a1, 99)没有改变a1的值

我加了打印语句以后发现调用get和set时各有两次A的copy constructor的调用

也就是说get和set都作用于a1的拷贝身上

请问bind有可能实现java的反射那样的效果吗?





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2