我正在为学校做一个项目,但我遇到了打嗝。
我有一个名为scheme的类,它由另一个名为"Token"
的类组成。计划如下:
class scheme
{
public:
Token * id;
vector <string> Paren;
vector <Token> idList;
scheme();
void addScheme(vector <Token> toAdd);
};
到目前为止一切顺利。但现在我在函数“addScheme”中,看起来像这样:
void scheme::addScheme(vector <Token> toAdd)
{
//Check if scheme is valid
if (isSchemeValid(toAdd) == false)
{
cout << "ERROR!" << endl;
return;
}
vector <Token> ids;
for (int i = 2; i < toAdd.size()-1; i++)
{
ids.push_back(toAdd.at(i));
}
*id = toAdd.at(0);
Paren.push_back("(");
Paren.push_back(")");
idList = ids;
}
直到最后一部分说
,我才有问题idList = ids;
以某种方式导致错误:
“CS Proj中的0x663FCCD2(msvcp110d.dll)的第一次机会异常2.exe:0xC0000005:访问冲突写入位置0x009DD1B8。”
我尝试手动将其循环到idList中,如下所示:
for (int i=0; i< ids.size(); i++)
{
idList.push_back(ids.at(i));
}
但是会引发此错误:
“CS Proj 2.exe中的第一次机会异常0x00348255:0xC0000005:访问冲突读取位置0x8B0C4295。”
所以......我没有想法。为什么我不能将id向量复制到idList向量中?
感谢您的帮助!