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 – 从静态函数调用非静态变量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)