c++ - 'giving out' 是构造函数中对 'this' 的引用吗?

标签 c++

我的代码:

Scene::Scene(const std::string &scene_file) : ambient_light(0, 0, 0), background(0, 0, 0){
  scene_parser parser(*this);
  parser.parse(scene_file);
}

scene_parser 是Scene 的 friend ,在parse 方法中它访问(r/w) Scene 的成员。这会导致任何问题吗?

最佳答案

是的,给出对this 的引用是可以的。但是,您通常希望在其他对象稍后使用该指针时执行此操作。您的用例看起来会在构造函数完成之前立即使用 Scene,这是一个非常滑的斜坡。

现在,您在调用 parse 后没有建立任何不变量,所以它应该没问题,但它也很脆弱,很容易在未来的更改中引入破坏。

关于c++ - 'giving out' 是构造函数中对 'this' 的引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4141322/

相关文章:

c++ - 在 fstream c++ 的 while 循环中使用多个定界符

c++ - 将屏蔽位移至 lsb

c++ - 如何分配和检索成员变量中的值?

c++ - 该项目不会将整数作为二进制读取并将它们作为二进制输出到新文件

C++11 使用指针修改 initializer_list 中的元素导致 SIGSEGV,为什么?

java - JNI java.lang.UnsatisfiedLinkError

c++ - 使用 C++ randint 生成四位数字

c++ - 使用SWIG将自定义C++异常动态地重新抛出为Python异常

C++ 对象列表不能正常工作

c++ - 几乎总是将自动规则与模板化构造函数一起使用?