一 举例:
vs:
#include <iostream>
class Demo {
public:
template<typename T>
void f(T&& t) {
std::cout << "Demo:f " << std::endl;
}
};
int main() {
const Demo t;
t.f<int>(1); // error
std::cin.get();
return 0;
}
![]()
g++:
![]()
二 C2662
Compiler Error C2662:
'function' : cannot convert 'this' pointer from 'type1' to 'type2'
The compiler could not convert the this pointer from type1to type2.
This error can be caused by invoking a non-const member function on a const object. Possible resolutions:
- Remove the const from the object declaration.
- Add const to the member function.
此错误可能是由对 const 对象调用非 const 成员函数引起的。 可能的解决方案:
- 从对象声明中移除 const。
- 将 const 添加到成员函数中。
在sdk接口返回类实例时特别要注意该错误。
三 参考
Compiler Error C2662错误解析与解决
博客主要介绍了Compiler Error C2662错误,该错误是编译器无法将this指针从type1转换为type2,可能由对const对象调用非const成员函数引起。还给出了可能的解决方案,如从对象声明中移除const、将const添加到成员函数中,同时提醒在sdk接口返回类实例时要注意该错误。
1645

被折叠的 条评论
为什么被折叠?



