我有一个名为“选项”的课程,这是标题信息:

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-> lits或opts-> getbits()

它总是返回打印的整数值

看来符号表在某种程度上被Objective-C和C ++方面陷入困境,但是我不知道该怎么做才能引起这一点。

如果我为Mac编译,则该代码即使可以使用Objective-C ++工作,并且只要C ++调用C ++,它似乎可以正常工作,因此它并不像记忆的损坏,它看起来像是符号表问题。

任何洞察力都将不胜感激。

有帮助吗?

解决方案

在Objective-C中 BOOL 是打字的 signed char. 。编译纯C ++时,您使用什么定义?如果有所不同,您将获得各种怪异,因为C ++代码和Objective-C ++代码将不同意成员变量的大小或布局。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top