问题标签 [this-pointer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1373 浏览

c++ - 'this'指针,使用'this'指针在子类中继承超类的函数

嗨,我想了解如何使用“this”指针。现在我编写了一个示例程序,它使用了一个类 Image,它是 BMP 类的子类。现在函数 TellWidth 和 TellHeight 在 BMP 类中声明。现在编译器给了我一个错误,说 Image 中不存在 TellWidth 函数。但是由于 Image 是 BMP 的子类,它不应该继承 BMP 中的功能。我该如何解决这个问题

图片

这个类太大了,不能在这里发,这里是一个相关的摘录

0 投票
2 回答
9696 浏览

c++ - 将 C++ 函数指针分配给同一对象的成员函数

如何让 test.calculate 中的函数指针分配(可能还有其余部分)起作用?

0 投票
4 回答
10529 浏览

c++ - shared_ptr 和 this 指针

好的,我开始使用共享指针并尽可能地传递共享指针。不再转换为原始指针。这很好用,除了在这种特定情况下:

假设我们有一个类也是另一个类的观察者,如下所示:

这个类在我的应用程序中是这样使用的:

MyClass 获得一个指向另一个类的共享指针并将其存储在它的 m_otherClass 数据成员中。在 DoSomethingImportant 方法中,MyClass 实例做了很多重要的事情,包括将自己注册为 m_otherClass 上的观察者,如下所示:

m_otherClass->registerObserver(this);

问题是 registerObserver 方法是这样定义的:

void registerObserver (std::shared_ptr 观察者);

它需要一个共享指针,但“this”是一个原始指针,而不是一个共享指针。

我看到了解决这个问题的三种方法:

  • 找到将普通指针转换为共享指针的技巧(请参阅问题将指针转换为 shared_ptr),但该问题的答案仅建议复制共享指针,而不是关于如何实际将指针转换为共享指针。
  • 将指向我们自己的共享指针传递给方法,如下所示:“myInstance->DoSomethingImportant(myInstance);” 这似乎有点愚蠢。
  • 将观察者部分放入一个单独的类中。这看起来有些矫枉过正,可能会使课程更难理解。

这个问题很明显,共享指针只是 C++ 的一个附加组件(我认为您在 C#(或一般的 .Net)和 Java 等其他语言/环境中没有同样的问题)。

关于如何处理这种情况的任何其他建议或技巧?

0 投票
3 回答
199 浏览

c++ - 使用 this = new Foo() 从内部将对象的实例设置为另一个实例?

我正在使用哈希表并对其进行重新哈希,我只是将所有值放入一个新的哈希表中,然后将执行实例设置为这个新的哈希表。

我不确定是否可以这样做,所以我只想确认是否是这种情况。我在尝试:

我知道问题不在于删除行,因为即使没有它也无法正常工作。这是错误:错误:需要左值作为赋值的左操作数。

另外,作为一个附带问题,复制分配的数组的最佳/标准方法是什么?*a = *b? 显然,我是 C++ 的新手,知道会有所帮助,但不是必需的。

0 投票
5 回答
897 浏览

c++ - “this”指针如何恰好指向不同的对象?

假设我有一堂课:

我有这些变量定义:

当我打电话object1.print() this时碰巧存储地址,object1所以我xobject1打印中获取,当我调用object2.print() this碰巧存储地址时object2,我xobject2印刷中获取。它是如何发生的?

0 投票
2 回答
247 浏览

c++ - C++ 内部结构:弄乱 this 指针

我对 C++ 的内部工作有一些疑问。例如,我知道一个类的每个成员函数都有一个隐含的隐藏参数,即 this 指针(与 Python 的做法非常相似):

然后假设函数的有效性不直接取决于 this 的有效性(因为它只是另一个参数),我是错误的吗?我的意思是,当然,如果您尝试访问 this 指针的成员,它最好是有效的,但是如果它被删除,该函数将继续,对吧?

例如,如果我弄乱了 this 指针并执行如下所示的操作怎么办?这是未定义的行为,还是由高度气馁定义的?(我是出于纯粹的好奇而问的。)

0 投票
4 回答
24322 浏览

c++ - “this”指针的类型

正如标题中提到的,我想知道'this'指针的类型。

我正在做一个项目,我观察到'this'指针的类型"ClassName * const this"在使用 VC++ 2008 的 Windows 上。好吧,我想知道使 this 指针成为常量指针的需要/要求是什么。谢谢。

0 投票
2 回答
1100 浏览

php - PHP分配另一个类的$this

我一直想知道是否可以将另一个对象分配给 $this?

在 CodeIgniter 中,我从主控制器调用另一个控制器。

应用程序/控制器/module.php

在被调用的类中:

MY_模块:

我想对 My_Module 类使用实例化类的声明。这样它就不会初始化相同的库并且不会花费更多资源。

我怎样才能做到这一点?

感谢您的建议。

编辑:我试图从 CI_Controller 扩展 MY_Module。但是由于它已经实例化了一次,因此会引起问题。

0 投票
1 回答
26554 浏览

c++ - 常量不匹配:2 个重载对“this”指针没有合法转换

我收到了这个奇怪的错误:

错误 C2663:“sf::Drawable::SetPosition”:2 个重载对“this”指针没有合法转换

我认为这与 const 不匹配有关,但我不知道在哪里,或者为什么。在下面的代码中,我有一个形状和精灵的向量,当尝试访问其中一个向量形状并调用它的一个函数时,我得到了错误。

我怎样才能解决这个问题?

0 投票
2 回答
293 浏览

c++ - 将节点作为外流操作符传递

这会打印有关限定符的错误消息,但并不真正理解这意味着什么以及如何调整代码以使其正常工作?无论如何,非常感谢您查看代码。

注意: ostream 运算符在 Node 类中是友好的。