(与这个问题有关。)
我有一个基类Base
和两个派生类,Der1
并且Der2
. (有关基本实现,请参阅链接问题。每个都有许多公共属性。)在我的程序中,我创建了一个Base
这样的数组:
Base *array[10];
int count = 0; // program-wide count of how many objects are in the array
然后稍后我用 和 的实例填充它,Der1
如下Der2
所示:
Der1 d = Der1();
d.x = 0; // Filling in public properties
d.y = 1;
d.z = 3;
array[count] = &d;
count++;
几乎相同的代码用于Der2
.
很久以后,我使用数组来调用这些类中定义的函数:
int result = array[i]->SomeFunction(x, y);
我的代码编译得很好,但是当我尝试运行它时,我得到“program.exe 中 0x00232d60 处的未处理异常:0xC000005:访问冲突读取位置 0x04064560。”
当我查看我试图访问的数组中的对象时,所有属性的值都是 0.0000 而不是它们应该是的值。还有两种double
类型的数组,看起来最后几个元素未初始化(“1.572398880752e-311#DEN”或“-9.2559631349317831e+061”或类似的)。
我做 .NET 太久了,忘记了很多关于指针的知识,我认为这是我问题的根源......关于如何解决这个错误的任何建议?