void Test :: printxy(void)':无法将'this'指针从'const Test'转换为'Test&'在const类中

时间:2013-12-14 22:16:26

标签: c++ class const

我编写了一个关于const类的非常简单的程序,但是,当我编译时,有一个错误:void Test :: printxy(void)':无法将'this'指针从'const Test'转换为'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");
}

2 个答案:

答案 0 :(得分:3)

由于printxy成员函数未声明const,因此无法在常量对象上调用它。您需要像这样声明成员函数const

class Test
{
    void printxy() const;
    //             ^^^^^

    // ...
};

void Test::printxy() const
{
    // ...
}

答案 1 :(得分:1)

您尝试在const对象printxy()上调用非const函数t。您在方法声明后缺少const

class Test {
    // ...
    void printxy() const;
};

void Test::printxy() const {
    // ...
}