我正在为我的新Linux发行版(check it out as soon as I finish)构建一个简单的包管理器,并遇到了问题。我的install()
和remove()
函数需要访问未指定数量的Package
个对象。这是安装功能。
void install(int argc, char *argv[]) throw()
{
for (int i = 2; i <= argc; i++)
{
Package p(argv[i]);
p.fetch();
cout << "Package " << p.getRef() << " retrieved succesfully from server.\n";
p.install();
cout << "Package " << p.getRef() << " installed succesfully.\n";
}
}
我怀疑这段代码并不完全是犹太人;这将导致多个名为p
的对象,这可能会导致编译和/或运行时错误。我正在寻找的是在循环的每次迭代中更改名称p
或在一次迭代后删除p
以便我可以自由创建该名称的另一个对象。
答案 0 :(得分:2)
您的代码没有明显的问题,多个对象也不会出现任何问题。变量p
具有自动storage duration,当它离开scope时会被销毁。当这意味着在每次迭代结束时for
循环p
被销毁并且不再存在。