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

メソッドを作成getNum()する必要があります。const

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

これは、calc()が へのconst参照を取得するためであり、その参照に対してメソッドmyClassのみを呼び出すことができます。const

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

の実装を見ると、getNum()そうでない理由はありませconstん。

于 2013-08-14T16:41:30.680 に答える