【问题标题】:passing allocated pointer before it allocated在分配之前传递分配的指针
【发布时间】:2014-04-22 09:50:03
【问题描述】:

我正在研究开源项目ROS。当我看到奇怪的代码时。

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

变量 server 在分配为 server 之前使用。那可能吗?至少,我的 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':未声明的标识符”。 我错过了什么吗?请帮帮我。

【问题讨论】:

  • 这看起来像是你的编译器的一个错误。它应该编译。 G++ example, Clang++ example.
  • 好的。似乎 MS Visual Studio 2010 无法编译它。谢谢你曼卡斯。谢谢比尔盖茨。

标签: c++ pointers


【解决方案1】:

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

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

【讨论】:

  • 谢谢曼卡斯。我添加了进一步的问题。请帮帮我
猜你喜欢
  • 2022-11-22
  • 1970-01-01
  • 2017-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多