我有一个名为用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 *opts=new Options([fileName cStringUsingEncoding:NSUTF8StringEncoding]);
现在发生的事情是,如果我将指针传递给另一个C ++方法,它可以正常工作,但如果我实际上尝试使用目标c方面的任何东西,例如
opts->位 要么 opts-> getBits()
它始终返回print
的整数值看起来似乎某个符号表在objective-c和C ++之间被破坏了,但是我不知道我能做些什么才能做到这一点。
如果我为mac编译,代码甚至可以使用Objective-C ++,并且只要C ++调用C ++它似乎工作,所以它不像内存被破坏,它只是看起来像一个符号表问题。 / p>
非常感谢任何见解。
答案 0 :(得分:1)
在Objective-C中,BOOL
是signed char
的typedef。在编译纯C ++时你使用什么定义?如果它不同,你会得到各种各样的怪异,因为C ++代码和Objective-C ++代码不会就成员变量的大小或布局达成一致。