提示this只能用于非静态成员函数内部?

问题描述

提示this只能用于非静态成员函数内部?

void ImageProcess_Bz(int T)
{
unsigned char*p_data;
int width, height;
p_data = this->Getdata();
width = this->Getwidth();
height = this->GetHeight();
for(int j=0;j
for (int i = 0;i
{
if (*p_data > T) //if(*p_data!=0) *p_data=255;
*p_data = 255;

        else
            *p_data = 0;

        p_data++;
    }

}

解决方案

没人回答吗

解决方案二:

   是的,this指代当前对象,只有访问对象的属性和方法用this才有意义,即非静态方法和属性才是实例对象才拥有的。而静态成员和方法是通过类名来访问的,即类的成员和方法。应该很好理解的,静态方法和变量是所有类的实例共享的,是类的东西,不需要实例化就能直接访问的,当然没有必要使用对象的this了。这是面向对象语言的语法规定。
时间: 2025-01-20 09:53:19

提示this只能用于非静态成员函数内部?的相关文章

mfc-error C2352: “CWnd::UpdateData”: 非静态成员函数的非法调用

问题描述 error C2352: "CWnd::UpdateData": 非静态成员函数的非法调用 CString getinfo_un(){ CString unstr;CWnd::UpdateData(TRUE);str=CString( un.GetBuffer() );str = un; } error C2352: "CWnd::UpdateData": 非静态成员函数的非法调用参见"CWnd::UpdateData"的声明 怎么办找

关于C++静态成员函数访问非静态成员变量的问题_C 语言

复制代码 代码如下: class a{public:  static FunctionA()  {     menber = 1;  } private:  int menber;} 编译上述代码,出错.原因很简单大家都知道,静态成员函数不能访问非静态成员,这是因为静态函数属于类而不是属于整个对象,静态函数中的 member可能都没有分配内存.静态成员函数没有隐含的this自变量.所以,它就无法访问自己类的非静态成员. 那要想访问怎么办呢?地球人都知道只要将: 复制代码 代码如下: int me

C++中的类静态成员和静态成员函数

(1)为什么需要类静态成员? 有时候某个类的多个对象需要访问一个全局对象,在这种情况下"提供一个全局对象"比"每个类都维持一个独立的数据成员"要更为有效.而类静态成员与全局变量相比,又有两点好处:(a)不存在与程序中其他全局名字冲突的可能性:(b)可设置为private,实现信息隐藏. (2)类静态成员的特点 对于非静态数据成员,每个类对象都有自己的拷贝,而静态数据成员对每个类类型只有一个拷贝.由于静态数据成员分配在全局数据区,因此在程序开始运行时就必须存在,故静态

C++类静态成员与类静态成员函数详解_C 语言

当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享.各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关.静态方法就是与该类相关的,是类的一种行为,而不是与该类的实例对象相关. 静态数据成员的用途之一是统计有多少个对象实际存在. 静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝图,在其中指定初值是不允许的.也不能在类的构造函数中初始化该成员,因为静态数据成员为类的各个对象共享,否则每次创建一

PHP静态成员变量和非静态成员变量详解

数据成员可以分静态变量.非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员. 非成静态员:所有没有加Static的成员都是非静态成员,当类被实例化之后,可以通过实例化的类名进行访问..非静态成员的生存期决定于该类的生存期..而静态成员则不存在生存期的概念,因为静态成员

深入解析C++编程中的静态成员函数_C 语言

C++静态成员函数 与数据成员类似,成员函数也可以定义为静态的,在类中声明函数的前面加static就成了静态成员函数.如 static int volume( ); 和静态数据成员一样,静态成员函数是类的一部分,而不是对象的一部分. 如果要在类外调用公用的静态成员函数,要用类名和域运算符"::".如 Box::volume( ); 实际上也允许通过对象名调用静态成员函数,如 a.volume( ); 但这并不意味着此函数是属于对象a的,而只是用a的类型而已. 与静态数据成员不同,静态成

C++类静态数据成员与类静态成员函数

在没有讲述本章内容之前如果我们想要在一个范围内共享某一个数据,那么我们会设立全局对象,但面向对象的程序是由对象构成的,我们如何才能在类范围内共享数据呢? 这个问题便是本章的重点: 声明为static的类成员或者成员函数便能在类的范围内共同享,我们把这样的成员称做静态成员和静态成员函数. 下面我们用几个实例来说明这个问题,类的成员需要保护,通常情况下为了不违背类的封装特性,我们是把类成员设置为protected(保护状态)的,但是我们为了简化代码,使要说明的问题更为直观,更容易理解,我们在此处都设

(一二八)比较成员函数、中括号表示法、静态成员函数

有比较函数是strcmp (参数1, 参数2)   参数是两个字符串,所在头文件是<string>   比较方法是按顺序依次比较参数1和参数2的第一个字符(看ASCII值). 假如相同,则比较下一个: 假如参数1的比参数2的大,则返回1(正数): 假如参数1的比参数2的小,则返回-1(负数): 假如两个字符串完全一样,则返回0.   其原理是(这个我自己写的): int strcmp(const char* a, const char* b) { while (*a == *b) { if (

构造函数问题出现的非静态成员是什么意思?

问题描述 构造函数问题出现的非静态成员是什么意思? 各位前辈希望指教.... 最近自学C++到构造函数的地方,照书上打了一段代码,发现神奇的不行 代码的部分是这样的 class Sales_data { friend istream &read(istream&,Sales_data&); friend ostream &print(ostream&,Sales_data&); public: //非委托的构造函数使用对应的实参初始化成员 Sales_dat