在分配之前传递已分配的指针

时间:2014-04-22 09:50:03

标签: c++ pointers

我正在研究开源项目 ROS 。虽然我看到了奇怪的代码。

Server server(n, "do_dishes", boost::bind(&execute, _1, &server), false);

变量服务器在分配为服务器之前使用。那可能吗?至少,我的visual studio 2010编译器不理解这种代码风格。如果这是真正可能的代码,请告诉我。

代码的原始文件:http://wiki.ros.org/actionlib#C.2B-.2B-_SimpleActionServer


---------已添加

谢谢你的好意。但是当我编译它时,我得到了''server':未声明的标识符“错误。所以我测试了简单的代码。

class TestCls {
public:
    TestCls(TestCls *aa)
    {

    }
};

int main(int argc, char **argv)
{
    TestCls tt(&tt);

}

它也会犯同样的错误。 “'tt':未声明的标识符”。 我错过了什么吗?请帮帮我。

1 个答案:

答案 0 :(得分:12)

这是合法的。变量在声明时立即在范围内。存在此规则以使自引用数据结构能够在单个行中构建。指针可以指向一个非构造的对象,只要在构造该对象之前它没有被解除引用。

由于指针被传递到Server构造函数,只要Server在调用函数对象之前正确等待,这将有效。

相关问题