【问题标题】:Trouble calling member function from another object从另一个对象调用成员函数时遇到问题
【发布时间】:2014-02-02 21:29:21
【问题描述】:

几个月前我开始使用 C++ 编写代码,现在我一直在尝试以 OO 方式编写这个井字游戏,但是我在调​​用成员函数时遇到了一些麻烦,让我们说只是为了参数,类 A 通过 B 类的另一个成员函数。

这里有一段代码只是为了清除它:

#include <cstdio>
#include <cstdlib>
#include <iostream>

using namespace std;

class A
{
 private:

    char cBlocks[9];

 public:

    void setA(int nBlock, const char cCharacter)
    {
        cBlocks[nBlock] = cCharacter;
    }
};

class B
{
 private:

    char cB;

 public:

    char getB()
    {
        return cB;
    }

    void makePlay(int nB)
    {
        const char cChar = getB();

        A::setA(nB, cChar);
    }
};

所以,当我尝试从 B::makePlay(int) 函数中进行此调用时:

A::setA(nB, cChar);

显示以下错误:“Call to non-static member function without an object argument”。

我该如何解决这个问题?怎么了 ? 感谢所有帮助!谢谢!

【问题讨论】:

    标签: c++ function oop member


    【解决方案1】:

    您需要在 A 类的实例上调用 setA

    A a;
    a.setA(nB, cChar);
    

    【讨论】:

    • 好的,但是如果我不假装在 B::makePlay(int) 成员函数中创建对象 A 的这个实例,而是想在 main() 函数中创建它呢?
    • 在这种情况下,您需要将 A 实例传递给 B::makePlay。 (或者,你可以给B 一个A 类型的成员并使用它)
    猜你喜欢
    • 1970-01-01
    • 2020-05-19
    • 2022-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2019-03-11
    相关资源
    最近更新 更多