0
我一直在尝试为外部函数内的类设置变量;我认为这最终会在函数退出后擦除类,如果这是真的,那么它有什么方法?在函数内部设置对象变量
Book bookArray[lineIndex];
bookArray[0].setTitle("Here!");
//function in loop called in main
for (int i = 0; i<lineIndex; i++)
{
arrayToBook(tempArray, bookArray[i]);
}
cout << bookArray[0].getTitle() << endl;
//returns empty space
//function definition
void arrayToBook(string* tempArray, Book bookIn)
{
bookIn.setTitle(tempArray[0]);
bookIn.setAuthor(tempArray[1]);
//other sets
}
尝试传递'bookIn'作为参考,如下所示:'void arrayToBook(string * tempArray,Book&bookIn)' –
如果您传递函数值,则在函数执行结束时,该对象被销毁,就像你的例子('Book bookIn');但是你可以通过引用('Book&bookIn')来传递它,以避免复制和修改传递的对象('bookArray [i]') – max66
你正在通过值'Book',因此它被复制,并且所有正在对副本(而不是原始对象)进行修改,并且该副本在函数退出后被销毁。考虑通过引用传递它。另外,请提供[mcve],因为您显示的代码段在语法上不正确。 –