0

我想将对象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;
    }
4

1 回答 1

4

You need to make getNum() a const method:

int getNum() const;
//           ^^^^^

This is because calc() takes a const reference to myClass, so only const methods can be called on that reference.

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

Looking at the implementation of getNum(), there is no reason for it not to be const anyway.

于 2013-08-14T16:41:30.680 回答