gpt4 book ai didi

c++ - 在C++中的Switch Case中创建对象之后,调用该对象的方法

转载 作者:行者123 更新时间:2023-12-02 10:14:37 25 4
gpt4 key购买 nike

我在开关盒中使用new创建了一个对象。该对象被分配给指针数组的元素。在这种情况下,我可以在该对象上调用方法,但是在这种情况下,我似乎无法。它只是不这样做。我有一个函数来设置对象的元素,可以在案例中调用它,但是在切换案例之外,我似乎无法使用一种方法来显示该对象的内容来调用该元素。我以为这里可能存在作用域问题,但该数组在switch大小写外部声明。

这是一个代码片段:

int main(void)
{
employee * pc[MAX];
showmenu();
int choice;
cin >> choice;
int j = 0;
while(true)
{
switch(choice)
{
case 1 :
{
cout << "j = " << j << endl;
employee * bee = new employee();
pc[j] = bee;
pc[j]->SetAll();
delete bee;
break;
}

case 2 :
{
cout << "j = " << j << endl;
manager * see = new manager();
pc[j] = see;
pc[j]->SetAll();
delete see;
break;
}

case 3 :
{
cout << "j = " << j << endl;
fink * dee = new fink();
pc[j] = dee;
pc[j]->SetAll();
delete dee;
break;
}

case 4 :
{
cout << "j = " << j << endl;
highfink * eee = new highfink();
pc[j] = eee;
pc[j]->SetAll();
delete eee;
break;
}


default : cout << "That's not a choice.\n";
}
showmenu();
cin >> choice;
j++;
if (j>=MAX || choice == 5)
break;


}

for (int i = 0; i < j; i++)
{
cout << "I made it into the for loop " << i << " times" << endl;
pc[i]->ShowAll();
}


return 0;
}

最佳答案

这是代码实际作用的说明:

首先,您声明了指向该对象的指针,然后获取该指针的副本(地址),然后删除了该指针。

因此,您有一个要存储的地址,但是在删除指针时不允许访问它。

这是一个常见错误,尤其是在使用函数然后返回指针时。

我建议如下:

cout << "j = " << j << endl;
pc[j] = new employee();
pc[j]->SetAll();
break;

关于c++ - 在C++中的Switch Case中创建对象之后,调用该对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62366769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com