我正在研究开源项目 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':未声明的标识符”。 我错过了什么吗?请帮帮我。
答案 0 :(得分:12)
这是合法的。变量在声明时立即在范围内。存在此规则以使自引用数据结构能够在单个行中构建。指针可以指向一个非构造的对象,只要在构造该对象之前它没有被解除引用。
由于指针被传递到Server
构造函数,只要Server
在调用函数对象之前正确等待,这将有效。