我有一个用 c++ 编写的名为 options 的类,这是标题信息:
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 *opts=new Options([fileName cStringUsingEncoding:NSUTF8StringEncoding]);
现在发生的情况是,如果我将指针传递给另一个 C++ 方法,它工作正常,但如果我实际上尝试访问目标 c 端的任何内容,例如
opts->bits 或 opts->getBits()
它总是返回整数值打印
看起来符号表在 Objective-c 和 C++ 端之间被弄乱了,但我不知道我能做些什么来导致这种情况。
如果我为 mac 编译,代码甚至可以使用 Objective-C++,只要 C++ 调用 C++,它似乎就可以工作,所以它不像内存被损坏,它只是看起来像一个符号表问题。
任何见解将不胜感激。