У меня есть класс с именем options, написанный на c ++, вот информация заголовка:
class Options {
public:
string filename;
string chunkDir;
string outFilename;
string inFilename;
BOOL compress;
BOOL extract;
BOOL print;
BOOL reconstruct;
int bits;
Options(string inFilename);
Options(int argc, char** argv);
void unsupported(string s);
void setOptionsFromArguments(int argc, char** argv);
void validateOptionCombination();
int getBits() {
return bits
};
};
В разделе Objective-C я инициализирую Options следующим образом:
Options *opts=new Options([fileName cStringUsingEncoding:NSUTF8StringEncoding]);
Теперь получается, что если я передам указатель другому методу C ++, он будет работать нормально, но если я на самом деле попытаюсь получить доступ к чему-либо на стороне цели c, например, используя
-> bits или opts-> getBits ()
Всегда возвращает целочисленное значение для печати
Похоже, что таблица символов каким-то образом искажается между объектами -c и C ++, ноЯ понятия не имею, что я мог сделать, чтобы сделать это.
Код работает даже с Objective-C ++, если я компилирую для Mac, и до тех пор, пока C ++ вызывает C ++, он, кажется, работает, поэтому не похоже на повреждение памяти, он просто выглядит как таблица символоввыпуск.
Любое понимание будет высоко ценится.