我想将对象A作为引用属性发送给对象B,然后在对象B中调用对象A的getter方法。下面的代码给出了错误:
myClass.cpp:11: 错误:将“const myClass”作为“int myClass::getNum()”的“this”参数传递会丢弃限定符
// Main file: class_method_test.cpp
#include <iostream>
#include <iomanip>
#include "myClass.h"
using namespace std;
int main()
{
myClass objA = myClass( 2 );
myClass objB = myClass( 3 );
objA.calc(objB);
cout << objA.getNum() << endl;
objB.print();
}
// myClass.h
#ifndef MYCLASS_H
#define MYCLASS_H
#include <string>
class myClass{
private:
int myNum;
std::string anyText;
public:
myClass();
myClass(int);
void calc(const myClass &);
int getNum();
void print();
void setText(std::string);
std::string getText();
};
#endif
// myClass.cpp
#include <iostream>
#include "myClass.h"
using namespace std;
myClass :: myClass() : myNum(0) {};
myClass :: myClass ( int aNum ) : myNum( aNum ) {};
void myClass :: calc( const myClass & calcObj )
{
myNum += calcObj.getNum();
};
int myClass :: getNum()
{
return myNum;
};
void myClass :: print ()
{
cout << myNum << endl;
};
void myClass :: setText(std::string newText) {
anyText = newText;
}
string myClass :: getText() {
return anyText;
}
最佳答案
你需要让 getNum()
成为一个 const
方法:
int getNum() const;
// ^^^^^
这是因为 calc()
对 myClass
有一个 const
引用,所以只有 const
方法可以调用该引用。
void calc(const myClass &);
// ^^^^^
看getNum()
的实现,反正没有理由不是const
。
关于c++ - 将一个对象发送到另一个对象并调用第一个对象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237477/