gpt4 book ai didi

c++ - 将对象传递给另一个类 C++ 中的函数

转载 作者:太空宇宙 更新时间:2023-11-04 15:24:33 24 4
gpt4 key购买 nike

我正在学习 C++ 中的类和对象,并尝试使用以下代码来测试我是否理解正确:

#include <iostream>

using namespace std;

class class1
{
public:
void write(int x)
{
dataObject.var = x;
}
};

class class2
{
public:
void read()
{
std::cout << dataObject.var;
}
};

class data
{
public:
int var;
data()
{
var = 1;
}
};

int main()
{
data dataObject;
class1 object1;
class2 object2;


object2.read(data dataObject);
object1.write(2);
object2.read(data dataObject);

return 0;
}

这是为了让两个对象都用于修改和使用第三个对象的成员,但出现以下错误:

In member function 'void class1::write(int)':
line 10: error: 'dataObject' was not declared in this scope

In member function 'void class2::read()':
line 14: error: 'dataObject' was not declared in this scope

In function 'int main()':
line 40 + 42: error: expected primary-expression before 'dataObject'

知道我哪里出错了吗?提前致谢。

编辑:感谢所有的建议。我现在的代码是:

#include <iostream>

using namespace std;

class class1
{
public:
void write(data &dataObject, int x)
{
dataObject.var = x;
}

};

class class2
{
public:
void read(data dataObject)
{
std::cout << dataObject.var << endl;
}
};

class data
{
public:
int var;
data()
{
var = 1;
}
};

int main()
{
data dataObject;
class1 object1;
class2 object2;


object2.read(dataObject);
object1.write(dataObject,2);
object2.read(dataObject);

return 0;
}

现在我得到了错误:

8 错误:“数据”尚未声明

10 错误:请求'dataObject'中的成员'var',它是非类类型'int'

18 错误:“数据”尚未声明

20 错误:请求'dataObject'中的成员'var',它是非类类型'int'

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

最佳答案

你出错的地方在于:

    void write(int x)
{
dataObject.var = x;
}

没有dataObject。您正试图让您的类依赖于某个全局对象。首先你必须决定你是否真的想要这个。如果这样做,您需要一种方法来确保这些全局对象在被类使用之前得到声明和实例化。

修复错误的方法有很多种,但首先您需要清楚您希望类做什么以及它们之间应该如何交互。

如何在没有全局对象的情况下解决此问题的示例:

class class1
{
public:
class1(data& dataObj) : dataRef_(dataObj) {}
void write(int x)
{
dataRef_.var = x;
}
private:
data& dataRef_;
};

然后主要是:

int main()
{
data dataObject;
class1 object1(dataObject);
object1.write(2);
}

关于c++ - 将对象传递给另一个类 C++ 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11916605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com