亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

求大神幫我看看怎么修改

下面是部分代碼

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 只有可讀權限??隙ㄊ遣豢梢缘摹?/p>

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

慕運維9949243 提問者

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

你只要記住一句話 ,常對象只能調用常對象成員函數。別的編譯器會報錯。修改的話m_coorA這個對象不要去調用setA或者把setA 這個成員函數修改為常成員函數 使用初始化列表進行賦值。(PS 或者不可行)

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

舉報

0/150
提交
取消
C++遠征之封裝篇(下)
  • 參與學習       70902    人
  • 解答問題       534    個

封裝--面向對象三大特征之一,通過案例讓C++所學知識融會貫通

進入課程

求大神幫我看看怎么修改

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號