函数末尾加上const提示没有this指针的合法转换
时间: 2023-12-23 08:04:12 浏览: 29
这个问题的原因可能是你在类的成员函数中使用了const关键字来修饰该函数,这表明该函数不会修改类的成员变量,因此编译器会把this指针看作一个指向常量的指针,这样在函数体内就不能修改this指针所指向的对象了。如果你在函数体内尝试修改类的成员变量,编译器就会给出这样的提示。
需要注意的是,如果你希望在成员函数中修改类的某些成员变量,就不能使用const关键字来修饰该函数。
相关问题
函数末尾加上const,调用某函数时提示没有this指针的合法转换
这个问题可能是因为你在调用该函数时,使用了一个指向常量对象的指针或引用,而该函数又没有被声明为const成员函数,导致编译器无法进行this指针的合法转换。
在C++中,如果一个函数被声明为const成员函数,那么它就承诺不会修改类的成员变量,因此可以被一个指向常量对象的指针或引用调用。但是如果函数没有被声明为const成员函数,那么就不能被一个指向常量对象的指针或引用调用,因为这会导致编译器无法进行this指针的合法转换。
如果你确定该函数不会修改类的成员变量,那么可以将该函数声明为const成员函数。如果该函数确实需要修改类的成员变量,那么就需要使用一个非常量的指针或引用来调用该函数。
c语言字符串拼接函数指针
C语言中的字符串拼接函数指针可以通过使用函数指针来实现。在C语言中,可以使用strcat函数来实现字符串的拼接操作。strcat函数的原型如下:
```c
char *strcat(char *dest, const charsrc);
```
其中,dest是目标字符串,src是要拼接的源字符串。该函数会将源字符串src拼接到目标字符串dest的末尾,并返回拼接后的目标字符串。
下面是一个使用函数指针实现字符串拼接的示例代码:
```c
#include <stdio.h>
#include <string.h>
char* concat(char* dest, const char* src) {
return strcat(dest, src);
}
int main() {
char str1[50] = "Hello";
char str2[] = " World!";
char* (*concatPtr)(char*, const char*) = concat;
concatPtr(str1, str2);
printf("拼接后的字符串:%s\n", str1);
return 0}
```
在上述代码中,我们定义了一个名为concat的函数,它接受两个参数:目标字符串dest和源字符串src,并返回拼接后的目标字符串。然后,我们定义了一个函数指针concatPtr,它指向concat函数。通过调用concatPtr函数指针,我们可以实现字符串的拼接操作。