【问题标题】:Editing an instance of a class that has not yet been defined编辑尚未定义的类的实例
【发布时间】:2018-02-05 10:44:40
【问题描述】:

是否可以编辑尚未在函数中定义的对象?例如,如果我在一个文件中有一个类将数字加一:

class MyClass
{
    private:
       int i;

    public:
        MyClass()
        {
            i = 0;
        }

        int addOne()
        {
            i += 1;
            return i;
        }
};

在另一个文件中,该类被导入。当add 函数被调用时,它会从类中调用addOne 函数:

#include "MyClass.h"

void add()
{
    a.addOne();
}

int main()
{
    MyClass a;
    add();

    return 0;
}

当我编译它时它会返回错误

错误:“a”未在此范围内声明

有什么方法可以实现吗?

我阅读但没有帮助解决我的问题的网站:

【问题讨论】:

  • 您为什么希望/期望它起作用?
  • 您必须将a 传递给add(),例如void add(MyClass &a) { a.addOne(); } 并在 main()add(a); 中调用它。
  • 你明白“在这个范围内声明”是什么意思吗?这是编程的一个非常重要的先决条件
  • 你知道#include是干什么用的吗?
  • 您是否搜索过您的错误信息并尝试理解它?

标签: c++ function class


【解决方案1】:

你想做的是这样的:

void add( MyClass & a)
{
    int num = a.addOne();
}

int main()
{
    MyClass newObj;
    // passing the new object to add
    add(newObj);

    return 0;
}
  1. add() 方法不知道您尝试使用的“a”,因此给您一个错误。
  2. 方法 addOne() 的返回类型为 int,因此当您使用返回值的方法时,您应该对它进行处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多