C++ 简单指针问题(在不同类之间共享向量)
我有一个类AudioDeviceManager,它通过引用将std::vector传递给AudioAnalyzer类 我希望其他对象能够访问这个向量(传递给AudioAnalyzer类)。为此,我在AudioAnalyzer类中创建了一个指针:C++ 简单指针问题(在不同类之间共享向量),c++,objective-c,memory,pointers,vector,C++,Objective C,Memory,Pointers,Vector,我有一个类AudioDeviceManager,它通过引用将std::vector传递给AudioAnalyzer类 我希望其他对象能够访问这个向量(传递给AudioAnalyzer类)。为此,我在AudioAnalyzer类中创建了一个指针: std::vector<float> *pointer; 然而,我似乎无法从另一个类spectrum访问它 我用方法调用初始化这个spectrum类(fft_数据也是指向std::vector的指针) -(id)initWithDataVe
std::vector<float> *pointer;
然而,我似乎无法从另一个类spectrum访问它
我用方法调用初始化这个spectrum类(fft_数据也是指向std::vector的指针)
-(id)initWithDataVec:(std::vector*)地址{
...
fft_数据=地址;
...
但是NSLog(@“值:%i”,fft_数据);
返回0
写入`NSLog(@“value:%i”,&fft_data)将返回看似有效的地址。但这不是指针的地址吗
我不确定我的代码是否正确。我正在寻找一种在不同类之间“共享”单个向量的方法。理想情况下,一个类将收到指向该向量的指针,它们可以随时访问该向量,而不必有另一个类调用的函数。您不能只传递(通过引用)同一个std::vector的同一个实例到所有需要它的类的构造函数?这难道不会使我的设计紧密耦合吗?我有一个“谱”绘制当前播放音频的频谱显示的类…AudioAnalyzer必须了解该类,才能将其向量传递给其构造函数。是的,更好的方法是使用单独的生成器类/函数设置所有对象,并将正确的对象传递给从属对象的构造函数。这样,所有类都可以不必知道彼此的内部细节,也可以使用它在测试代码中传递对象的模拟/测试版本,以便于单元测试。这种技术称为依赖项注入,请尝试通过谷歌搜索。如何使用std::vector指针调用initWithDataVec?我建议您使用“%p”而不是“%I”对于NSLog格式的指针。std::vector*toData=[analyzer指针];spectrum=[[spectrum alloc]initWithDataVec:toData];
NSLog(@"%i", [self pointer]);
det->process(time, *[self pointer]);
- (id) initWithDataVec:(std::vector<float>*)address {
...
fft_data = address;
...