为了账号安全,请及时绑定邮箱和手机立即绑定

求大神帮我看看怎么修改

下面是部分代码

Line.cpp

#include<iostream>

#include"Line.h"

using namespace std;

  Line::Line(int x1, int y1, int x2, int y2) :m_coorA(x1,y1), m_coorB(x2, y2)

{

cout << "Line()" << endl;

}

Line::~Line()

{

cout << "~Line()" << endl;

}

void Line::setA(int x, int y)

{

m_coorA.setX(x);

m_coorA.setY(y);

}

void Line::setB(int x, int y)

{

m_coorB.setX(x);

m_coorB.setY(y);

}

void Line::printInfo()

{

cout << "printInfo()" << endl;

cout << "("m_coorA.getX() << "," << m_coorA.getY() << ")" << endl;

cout << "("m_coorB.getX() << "," << m_coorB.getY() << ")" << endl;

}

void Line::printInfo() const

{

cout << "printInfo()const" << endl;

cout << "("m_coorA.getX() << "," << m_coorA.getY() << ")" << endl;

cout << "("m_coorB.getX() << "," << m_coorB.getY() << ")" << endl;

}

Line.h

#include"Coordinate.h"

class Line

{

public:

Line(int x1, int y1, int x2, int y2);

~Line();

void setA(int x, int y);

void setB(int x, int y);

void printInfo();

void printInfo() const;

private:

const Coordinate m_coorA;

Coordinate m_coorB;

};

前两个黑体部分错误提示:不兼容的类型限定符;

后四个黑体部分错误提示:未找到用户定义的文本运算符。


正在回答

2 回答

常对象只能调用常成员函数。 m_coorA为常对象,而setA 为普通成员函数,m_coorA.setA(T* this,int x,int y)参数 T* this指的当前对象有可读可写权限,而m_coorA 只有可读权限。肯定是不可以的。

3 回复 有任何疑惑可以回复我~
#1

慕运维9949243 提问者

非常感谢!
2018-08-24 回复 有任何疑惑可以回复我~

你只要记住一句话 ,常对象只能调用常对象成员函数。别的编译器会报错。修改的话m_coorA这个对象不要去调用setA或者把setA 这个成员函数修改为常成员函数 使用初始化列表进行赋值。(PS 或者不可行)

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70919    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

求大神帮我看看怎么修改

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信