0

我有一个用 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++,它似乎就可以工作,所以它不像内存被损坏,它只是看起来像一个符号表问题。

任何见解将不胜感激。

4

1 回答 1

1

在 Objective-C 中,BOOL是一个 typedef 到signed char. 编译纯 C++ 时使用什么定义?如果不同,你会感到很奇怪,因为 C++ 代码和 Objective-C++ 代码在成员变量的大小或布局上不一致。

于 2010-09-15T22:12:05.503 回答