这令人费解。我需要在我的程序中使用一个函数 CCountry::getName()。奇怪的是,在测试它是否完全有效时,它在一个地方有效,但在两行以下不起作用,我不知道为什么。例如...
while(line != "---" && line != "------")
{
CCountry *tempCountry = new CCountry(line);
cout << tempCountry->getName() << flush;
(*tempContinent).addCountry(*tempCountry);
getline(filestr, line);
}
作品。它按顺序列出了所有国家/地区名称。然而...
while(line != "---" && line != "------")
{
CCountry *tempCountry = new CCountry(line);
(*tempContinent).addCountry(*tempCountry);
getline(filestr, line);
cout << tempCountry->getName() << flush;
}
不工作。它甚至无法打印一个国家/地区名称,而是在调用 getName() 的行上抛出一个段错误。
这里有两个函数供进一步参考,getName() 和 addCountry()
string CCountry::getName()
{
return *name;
}
和
void CContinent::addCountry(CCountry country)
{
(*countries).push_back(country);
}
根据请求,这里是 CCountry 构造函数:
CCountry::CCountry(string in_name)
{
name = new string;
*name = in_name;
player = new int;
*player = -1;
units = new int;
*units = 0;
neighbors = new list<CCountry>;
}