将一个对象发送到另一个对象并调用first-objects方法

Send an object to another object and call first objects method

本文关键字:一个对象 调用 first-objects 方法      更新时间:2023-10-16

我想将对象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()采用了对myClassconst引用,因此只能对该引用调用const方法。

void calc(const myClass &);
//        ^^^^^

getNum()的实现来看,它没有理由不成为const

相关文章: