我有一个类Foo
,我希望能够将其写入全局数组Bar
。
在Global.h
extern float Bar[256];
在Foo.h
class Foo {
public:
Foo(float array[])
void write(float toWrite);
private:
char ptr;
}
在Foo.cpp
Foo::write(float toWrite){
array[ptr] = toWrite;
ptr++;
}
在main.cpp
中:
#include "Global.h"
#include "Foo.h"
Foo foo(Bar);
main(){
foo.toWrite(100);
}
这是将指向全局数组的指针传递给新对象的正确方法吗?我不想创建本地副本。
答案 0 :(得分:0)
在回答此问题时避免XY问题。为什么要使用全局变量?如果是因为要在类Foo的所有实例中使用Bar的单个实例,则可以使用静态成员变量来执行此操作,而无需使用丑陋的全局变量。如果要让Foo的每个实例将其Bar数组映射到不同的内存块,那就是另一个问题。
您还需要初始化索引值,这是一些示例代码。
#include <iostream>
class Foo
{
public:
Foo();
void write(float toWrite);
static float Bar[256];
private:
unsigned char index;
};
float Foo::Bar[256] = {0,0,0,0,0};
Foo::Foo(){
index = 0;
}
void Foo::write(float toWrite){
Foo::Bar[index++] = toWrite;
}
int main()
{
Foo foo1, foo2;
foo1.write(100);
foo1.write(100);
foo2.write(200);
std::cout << Foo::Bar[0] << ", " << Foo::Bar[1] << ", " << Foo::Bar[2] << ", " << Foo::Bar[3] << "\n";
}
将打印出
200, 100, 0, 0