我想将对象A作为引用属性发送到对象B,然后在对象B中调用对象A的getter方法。下面的代码给出了错误:
// 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;
}
答案 0 :(得分:4)
您需要getNum()
const
方法:
int getNum() const;
// ^^^^^
这是因为calc()
对const
的{{1}}引用,因此只能在该引用上调用myClass
个方法。
const
查看void calc(const myClass &);
// ^^^^^
的实施情况,无论如何都没有理由不getNum()
。