将一个对象发送到另一个对象并调用first-objects方法
Send an object to another object and call first objects method
我想将对象A作为引用属性发送到对象B,然后在对象B中调用对象A的getter方法。下面的代码给出了错误:
myClass.cpp:11:error:将"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++ 同时,尝试通过调用另一个对象中的成员函数来创建 std:: 线程
- 我可以制作一个对象方法,如果单独调用,它将自行修改,但如果在复制初始化期间调用,则会返回一个新对象?
- 是否可以从另一个类对象调用一个类函数而不继承第一个类
- 调用对象类方法,该方法在另一个对象类中的向量中
- 为什么在 C++ 中,当对象包含在另一个对象中时,复制构造函数被调用两次
- 从另一个模板对象调用模板方法时出现奇怪的编译行为
- 使用SWIG包装C 类,该类调用另一个对象成员函数
- 从另一个对象调用成员函数时出现问题
- 将一个对象的函数设置为由arduino库中的另一个对象调用
- c++oop初学者-在一个函数调用中返回向量中每个创建对象的输出和
- 尝试将调用对象与另一个对象进行比较时出现分段错误
- 当一个没有参数的成员函数被c++中的一个对象调用时会发生什么
- 为什么在 const 对象上调用 std::move 在传递给另一个对象时会调用复制构造函数
- 使用“std::function”从另一个对象调用对象的成员
- 从另一个对象调用一个对象的函数时未定义的引用
- 你能同时对一个对象调用几个方法吗
- 类draw()方法在直接调用时有效,但在被另一个对象调用时崩溃