c – 从静态函数调用非静态变量

c – 从静态函数调用非静态变量,第1张

概述我是C的初级程序员,为我的公司做一个PoC.所以我为我的基本问题道歉. class TestOne{ private: TestTwo* t2; void createInstance(TestTwo* param){ t2 = param; } static void staticFunctionToAccessT2(){ // Now here I 我是C的初级程序员,为我的公司做一个PoC.所以我为我的基本问题道歉.

class TestOne{  private:    TestTwo* t2;  voID createInstance(TestTwo* param){    t2 = param;  }  static voID staticFunctionToAccesst2(){    // Now here I want to access "t2" here in the current instance of the class    // By current instance I mean "this" in non-static context    // currently there is no function to get object,but can be created    // ** we cannot call new TestOne(),because that will create a new instance    // ** of the current class and that I don't want.  }}

在这方面的任何帮助将不胜感激.

谢谢

=== UPDATE ===

这可以作为我在QT Creator中开发应用程序的场景,其中我有一个预定义签名的静态函数,并希望访问UI元素以进行文本更改(如TextEdit)

解决方法 即使在Java中也不能这样做.

静态方法只是类的所有实例的本地辅助函数,无法访问单个类状态(例如t2).

从方法中删除静态,或者使成员变量成为静态变量,具体取决于您要完成的 *** 作.

编辑:

如果我理解正确,你的SDK需要一个函数指针,它将调用它来修改你的实例’t2.你的mutator方法应该是公共的和非静态的.所以我们只是说你重新定义了staticFunctionToAccesst2,如下所示:

public: voID mutateT2();

如果要调用mutateT2的实例定义为:

TestOne foo;

你的SDK想要一个函数指针,你可以在其中传递:

std::bind(&TestOne::mutateT2,foo)

正如下面的Mike Seymour所指出的那样,只有当SDK方法参数是std :: function而不是它的参数是原始函数指针时才有效.

总结

以上是内存溢出为你收集整理的c – 从静态函数调用非静态变量全部内容,希望文章能够帮你解决c – 从静态函数调用非静态变量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1227433.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存