[英]Problem assigning an int pointer to an index of void* array
我在 header 文件 Array.h 中定義了一個Array.h
。
Class 代碼:
class Array
{
private:
int length;
void **data;
public:
Array();
void push(void *);
};
我也有Array.cpp
文件。
代碼:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "Array.h"
Array::Array()
{
length = 0;
data = NULL;
}
void Array::push(void *item)
{
void **temp = new void *[length + 1];
for (int i = 0; i < length; i++)
temp[i] = data[i];
temp[length] = item;
data = temp;
length++;
}
最后, main.cpp
。
代碼:
#include <stdio.h>
#include "Libs/Array.h"
void loadArray();
int main()
{
loadArray();
return 0;
}
void loadArray()
{
Array ints = Array();
while (true)
{
printf("Array (Size: %d): ", ints.size());
for (int i = 0; i < ints.size(); i++)
printf("%d ", *((int *)ints.get(i)));
printf("\n");
printf("1] Push\n2] Pop\n3] Set\n4] Get\n5] Clear\n6] Shift\n7] Unshift\n8] Size\n\n9] Exit\n");
printf("Choice: ");
int choice;
scanf("%d", &choice);
printf("\n\n");
bool shouldExit = false;
switch (choice)
{
case 1:
{
int x;
printf("Enter a number: ");
scanf("%d", &x);
ints.push(&x);
printf("\n\n");
break;
}
(...)
}
if (shouldExit)
break;
}
}
當我推送第一個值時,它成功地推送到數組中。 但是當我推送更多值時,初始值會簡單地被新的推送值替換。
Output (粘貼箱):
為什么會這樣? 我真的很困惑。 任何幫助表示贊賞。
局部變量int x;
當其塊的執行結束時將消失,之后你不能取消引用指向它的指針。
您必須分配新區域來存儲值並推送其指針,而不是推送&x
。
ints.push(new int(x));
下一步將定義復制構造函數、賦值運算符和析構函數以正確處理數組(遵循三規則)並修復 memory 泄漏。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.