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

标签 c++ object methods

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

最佳答案

你需要让 getNum() 成为一个 const 方法:

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

这是因为 calc()myClass 有一个 const 引用,所以只有 const 方法可以调用该引用。

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

getNum()的实现,反正没有理由不是const

关于c++ - 将一个对象发送到另一个对象并调用第一个对象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237477/

相关文章:

c++ - fftshift/ifftshift C/C++ 源代码

c++ - boost::condition 不存在 - condition 不是 boost 的成员

swift - 使用 Realm Swift 3.0.1 创建数据库

javascript - 文字与原型(prototype)对象表示法的数据结构

java - 无法访问Java中的类方法

c++ - 如何在没有迭代器的情况下使用 C++ STL 列表?

c++ - 模板和静态对象(未定义的引用和要求来自)

java - 在servlet中解析Json

ruby-on-rails - Ruby on Rails 中的 Pets#edit 中没有方法错误

java - 与抽象类的继承混淆。方法会互相覆盖吗?