【问题标题】:C++ pointer variable of class [closed]类的C ++指针变量[关闭]
【发布时间】:2012-08-01 18:16:19
【问题描述】:

这里有一个例子来解释我的问题:

//myfile.h
class thing
{
public:
    void doSomething();
private:
    Book *text;
};

现在,在 doSomething 方法中,如何调用 Book 对象的方法 read()? Read() 是非静态的。对于这个例子,假设我创建了一个名为 obj 的事物对象,它称为 doSomething()。

正确的调用是: 对象->读取(), 或 this.obj->read()

【问题讨论】:

  • 答案与指针完全无关。 all 成员的行为相同。此外,评估指针是否真的是您想要的。在大多数情况下,指针在现代 C++ 中没有位置。
  • 为什么不直接测试呢? text->read()
  • @RiaD 由于普遍存在未定义的行为,C++ 的测试方法惨遭失败。
  • 不要增加混乱,但您可以使用取消引用运算符 * 并执行类似 (*obj).read() 的操作,但取消引用箭头会为您执行此操作。一般来说,请务必检查您的指针!= NULL
  • 真的需要开始阅读C++ book

标签: c++ variables pointers private


【解决方案1】:

正确的调用是text->read()。你也可以使用this->text->read()

在您的示例中,无需使用this。还要注意this 是一个指针,所以this.next->read() 甚至不会编译。

编辑如果您“创建了一个名为 obj 的事物对象,该对象称为 doSomething()”,那么甚至不必有 this,具体取决于 在哪里你实例化thing。如果thing 不是另一个对象的数据成员,那么你只需要:

thing obj;
....
obj.doSomething();

无论如何,您都不能调用obj.read(),因为thing 没有read() 方法。

【讨论】:

    【解决方案2】:

    只是:

    text->read()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      • 2018-08-26
      • 2011-10-22
      • 1970-01-01
      相关资源
      最近更新 更多