我正在开发适用于 iOS 和 Android 的应用程序,并且在我的 C++ 代码中得到了非常不同的结果。我遇到的问题是输入一个函数会踩到一个成员变量是一个派生类。举个例子
int main()
{
A** arrayOfA = new A[10];
for (int i = 0; i < 10; ++i)
{
arrayOfA[i] = new D();
}
return 0;
};
class A
{
// Original code here. After this is the added function and member variable that breaks it
public:
virtual u32 GetterFunction() = 0;
protected:
u32 ProblemVariable;
};
class B : A
{
public:
B(u32 index) { ProblemVariable = index }
virtual u32 StompedGetter() = 0;
virtual u32 GetterFunction() { return ProblemVariable; }
void Initialize()
{
u32 sometimesBunkNumber = StompedGetter();
}
protected:
u32 StompedVariable;
};
class C : A
{
public:
virtual u32 GetterFunction() { return 0; }
};
class D : B
{
B() { Initialize(); }
virtual StompedGetter() { return StompedVariable; }
}
class E : B
{
virtual StompedGetter() { return 0; }
}
现在,这里的问题是一切正常,直到我将成员变量和虚拟 getter 放在类 A 中。当调用 getter 时,它会随机给出一个双层编号。它可能会工作 2 次,然后它会返回一个错误的数字(显然是从内存中的错误位置抓取)。该功能是否为虚拟并不重要,但它是理想的解决方案。最糟糕的是,它在 iOS 版本上编译并运行良好,但在 Android 上它就死了。就像澄清一样,它一直运行到它在 A 类的数组中初始化 B 类。抱歉,如果这非常含糊,但感谢任何和所有帮助。提前致谢!