memberA определяется в заголовке ClassA.
memberB определен в заголовке ClassB.
ClassB является подклассом ClassA
Внутри экземпляра ClassB установка memberA с помощью простого присваивания:
memberA = 0.05
... также меняет memberB, но на сумасшедший номер - 1028443341. Кроме того, присвоение 0.05 memberA приводит к тому, что memberA отображается в отладчике как 5.33083531e-38.
Обе переменные являются числами с плавающей запятой, а также не являются указателями. Я почти наверняка совершаю какую-то ошибку, но понятия не имею, что это может быть. Какой тип ошибок может привести к тому, что присвоение значения одной переменной приводит к сумасшедшим значениям, появляющимся в двух переменных?
********************* Редактировать **********************
Я сузил проблему до некоторой «хитрости», которую я сделал, чтобы получить переменные члена C ++:
Спасибо за все мысли, ребята. Опасно позволять новичку, как я, на этом низкоуровневом языке! Вот где проблема была:
@interface LoopyPulser : NSObject{
float _pulseRate;
UInt32 tickInterval;
UInt32 step;
InMemoryAudioFile * audioFilePlayer;
#ifdef __cplusplus
ADSR* env;
StkFrames* audioFrames;
# endif
Pattern * pattern;
float loopLengthRatio;
float volume;
}
Я читал об этом #ifdef __cplusplus бизнесе где-то еще на SO, как способ импорта C ++ в заголовочные файлы, которые затем импортируются файлами Obj-C. Теперь мне кажется, что это ужасная идея и, скорее всего, причина моей сумасшедшей ошибки. Если я удалю членские переменные внутри #ifdef __cplusplus, безумие исчезнет.
Итак, как лучше всего иметь переменные-члены C ++ в Obj-C ++? Могу ли я использовать идентификаторы, может быть?