Простой вопрос-указатель (Совместное использование вектора между различными классами) - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть класс AudioDeviceManager, который передает std :: vector по ссылке на класс AudioAnalyzer.

Я хочу, чтобы другие объекты могли иметь доступ к этому вектору (который передается в класс AudioAnalyzer). Для этого я создал указатель в классе AudioAnalyzer:

std::vector<float> *pointer;

Я создал для него геттер, используя свойства Objective-C. Когда я нахожусь в том же классе, я могу нормально обращаться к нему и передавать его другим объектам (по ссылке)

NSLog(@"%i", [self pointer]);
det->process(time, *[self pointer]);

Однако я не могу получить к нему доступ из другого класса, спектра Я инициализирую этот класс спектра вызовом метода (fft_data также является указателем на std :: vector)

- (id) initWithDataVec:(std::vector<float>*)address {
...
fft_data = address;
...

Но NSLog(@"value: %i", fft_data); возвращает 0.

Запись `NSLog (@" value:% i ", & fft_data) возвращает то, что кажется правильным адресом. Но разве это не адрес указателя?

Я не уверен, что мой код правильный. Я ищу способ «поделиться» одним вектором среди разных классов. В идеале один класс получит указатель на вектор, к которому они могут получить доступ в любое время, без необходимости вызова функции другим классом.

1 Ответ

0 голосов
/ 28 февраля 2011

Вы не можете просто передать (по ссылке) один и тот же экземпляр того же std :: vector конструкторам всех классов, которые в этом нуждаются?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...