2 u013190020 u013190020 于 2016.03.22 10:22 提问

调用成员函数this指针突然变为NULL

成员函数在调用另一个成员函数的时候,this指针变成了NULL,想请问一下是什么原因,该怎么解决呢?
(数组溢出已经检查过了,都没有)

2个回答

u013337963
u013337963   2016.03.22 10:35

搞清this永远指调用当前对象,这样就不会出错了

cxsmarkchan
cxsmarkchan   2016.03.22 11:25

贴出代码来看看呗。
单从你的问题描述来看,this指针是null,一般是因为调用这个成员函数的对象本身就是null。例如:

class A{...}
int main(){
    A* p = NULL;
    p->method();
}

进入这个method时,this指针就是null。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
详解this指针--为什么空的对象指针可以调用成员函数
引题class A{ public: void function() { cout << "I can run" << endl; } };int main() { A* pa = NULL; pa->function(); system("pause"); return 0; }C++中,空指针是不能够使用的,然而空对象指针有
c++ 如何把this指针传入成员函数 像全局函数一样调用成员函数
测试这个功能的初衷是测试boost里面的bind boost::bind((&A::sum), &a, _1, _2) 上面的代码是我boost bind及多线程这篇博客里面的一行代码。我就像boost是怎么做到这样调用一个类的成员函数的。其实成员函数和全局函数无非就是差一个this指针参数。给传进去不久也可以调用了。然而并没有那么简单。看了boost的源码表示太长了。没怎么看懂 然后就
C++基础:类与对象(对象调用成员函数 this指针)
1.一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。 this指针的使用: 一种情况就是
类中非静态成员函数中的----this指针
首先思考一下在c++中,编译器是如何识别一个类的? 识别一个类可以分为一下三步? ①识别类名; ②识别数据成员; ③识别成员函数并将其改写。 引出的问题:类中的数据成员相当于全局变量,但是全局变量在使用之前,必须先定义,而类中的数据成员的位置可以任意,这就是因为识别类时的顺序而导致的区别。我们都知道类中成员函数和数据成员的存储方式: 类的大小包括非静态数据成员而不包括成员函数
MFC Win32 sendmessage丢失this指针,this指针变为NULL
一般导致这种问题的原因是内存访问越界造成的,看一下调用栈或者sendmessage之前是否有数组分配越界。
静态函数 访问非静态变量 可以模仿 传递this指针
C++会区分两种类型的成员函数:静态成员函数和非静态成员函数。这两者之间的一个重大区别是,静态成员函数不接受隐含的this自变量。所以,它就无法访问自己类的非静态成员。 在某些条件下,比如说在使用诸如pthread(它不支持类)此类的多线程库时,就必须使用静态的成员函数,因为其地址同C语言函数的地址兼容。这种铜限制就迫使程序员要利用各种解决办法才能够从静态成员函数访问到非静态数据成员。 第一个
this指针指向当前调用对象,只是用于类的非静态成员函数。静态函数和全局函数 无当前对象,无this指针。
void Date::setMonth( int mn ) {      month = mn; // 这三句是等价的      this->month = mn;      (*this).month = mn;  }题目9. Please choose the right statement of "this" pointer:(下面关于this指针哪个描述是正确的) A.
静态成员函数、this指针、对象指针和动态对象使用小结
先声明一个Time类 ·静态成员函数 ·静态成员函数就是使用 static 关键字声明的成员函数    在类外实现时不加static关键字,只有在类内声明时才加static ·静态成员函数是类的一部分,作用是为了处理静态数据成员    没有this指针 ·静态成员函数可以直接访问该类的静态成员,但不能直接访问类中的非静态成员 ·若想在静态成员fun中使用非静态成员,则必须
成员函数及this指针的意义
同样受访问修改符的限制,被public修饰的可以被外部访问,被private修饰的则不能被外部访问class Object { public: int x; int y; void Test() { printf("hello,world!\n"); } private:
浅析C++中的this指针 通过空指针(NULL)可以正确调用一些类的成员函数?
http://blog.csdn.net/starlee/article/details/2062586    有下面的一个简单的类: class CNullPointCall { public:     static void Test1();     void Test2();     void Test3(int iTest);     void Test