下午所有, 关于Stack Overflow的第一个问题 - 我会尽力清楚。
我为类“Class 2”创建了一个对象数组“Objects2 [arraySize]”,必须在Class 1和main()函数中引用它。
Class1.h
class Class1
{
public:
void parseFunction(several parameters);
private:
int otherVariables;
};
Class1.cpp
#include "Class1.h"
void Class1::parseFunction(several parameters)
{
for(int i = 0; i < arraySize; i++)
{
Objects2[i].someMemberFunction();
}
}
主要
#include "Class1.h"
main()
{
Class2 Objects2[arraySize]; //Arbitrary array size
Class1 Object1;
Object1.parseFunction(some parameters);
for(int j = 0; j < arraySize; j++)
{
Objects2[j].someOtherMemberFunction();
}
}
我尽我所能简化了这一点,希望能够达到可读性。我的目标是能够从多个类访问这些对象“Objects2 [arraySize]”,但我正在努力使指针工作。我故意选择使用固定数组大小而不是向量来尝试简化代码。
现在只有一个类(错误,主要的OR类1)可以一次访问这些对象及其功能。我试着将Class 1作为第2类中的函数的“传递”,但感觉很好。有更优雅的方式吗?有什么指针吗?
编辑:要明确,我不太清楚如何在不同的类之间共享对象。我的目标是创建大量的这些“Objects2 [arraySize]”对象(通过创建它们的数组来完成),并在几个不同的类中访问它们。我已经研究了通过引用传递,但是对于这个对象数组来说无法完全正确。
答案 0 :(得分:0)
当您正在寻找更通用的答案时,这可能是一个特定的答案,但您可以简单地将该数组包含为Class1的成员并提供这样的公共访问。
class Class1
{
public:
Class2 Objects2[arraySize];
void parseFunction(several parameters);
private:
int otherVariables;
};
在主程序中,您可以将其作为Object1.Objects2访问。如果您不希望它与实例绑定,您可以将其设为静态成员。
但是,更好的方法可能是隐藏实际成员并提供访问者(获取/设置)。这取决于你想要做什么。
如果您想通过引用传递,那么您可以在Class1中更改您的方法,如下所示:
void Class1::parseFunction(several parameters, Class2& Objects2[])
然后将其作为main中的参数传递,并在parseFunction方法中引用它。
另一种方法是包含一个“Globals.h”文件,该文件定义了你想在任何地方访问的所有内容。
答案 1 :(得分:0)
Objects2位于“main”中,因此甚至无法从Class1对象访问它。您可以选择的一些选项是: (1)将数组传递给Class1 :: parseFunction。 (2)将实际参考/指针存储在“Class1”中。 (3)使数组全局化。