将对象发送到另一个对象并调用第一个对象方法

时间:2013-08-14 16:40:30

标签: c++ object methods

我想将对象A作为引用属性发送到对象B,然后在对象B中调用对象A的getter方法。下面的代码给出了错误:

myClass.cpp:11:错误:将'const myClass'作为'this 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;
    }

1 个答案:

答案 0 :(得分:4)

您需要getNum() const方法:

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

这是因为calc()const的{​​{1}}引用,因此只能在该引用上调用myClass个方法。

const

查看void calc(const myClass &); // ^^^^^ 的实施情况,无论如何都没有理由不getNum()