void Test::printxy(void)' : 不能在 const 类中将 'this' 指针从 'const Test' 转换为 'Test &'
Posted
技术标签:
【中文标题】void Test::printxy(void)\' : 不能在 const 类中将 \'this\' 指针从 \'const Test\' 转换为 \'Test &\'【英文标题】:void Test::printxy(void)' : cannot convert 'this' pointer from 'const Test' to 'Test &' in const classvoid Test::printxy(void)' : 不能在 const 类中将 'this' 指针从 'const Test' 转换为 'Test &' 【发布时间】:2013-12-14 22:16:26 【问题描述】:我编写了一个关于 const 类的非常简单的程序,但是,当我编译时,出现错误:void Test::printxy(void)' : cannot convert 'this' pointer from 'const Test' to 'Test & '
程序如下
#include <iostream>
using namespace std;
class Test
private:
int x, y;
public:
Test(int a = 1, int b = 1) : x(a), y(b) ;
void printxy();
;
void Test::printxy()
cout << "x*y=" << x*y << endl;
void main(void)
const Test t;
t.printxy();
system("pause");
【问题讨论】:
为什么这个网站有这么多问题都用void main
?
@remyabel :我自己也想知道。甚至 Herbert Schildt 的书(至少我可以在 amazon.com 上看到的那部分)都说对了。
【参考方案1】:
由于printxy
成员函数未声明const
,因此无法在常量对象上调用它。你需要像这样声明成员函数const
:
class Test
void printxy() const;
// ^^^^^
// ...
;
void Test::printxy() const
// ...
【讨论】:
【参考方案2】:您尝试在const
对象t
上调用非const
函数printxy()
。您在方法声明后缺少const
:
class Test
// ...
void printxy() const;
;
void Test::printxy() const
// ...
【讨论】:
以上是关于void Test::printxy(void)' : 不能在 const 类中将 'this' 指针从 'const Test' 转换为 'Test &'的主要内容,如果未能解决你的问题,请参考以下文章
从 'void* (*)(int*)' 到 'void* (*)(void*)' 的无效转换