【发布时间】:2014-04-19 00:35:57
【问题描述】:
我一直被困在这个问题上,在互联网上搜索找不到解决办法。这段代码应该提示用户输入 3 个不同的字符串并将它们分配给类的成员变量。
void Book::setBookProperty()
{
string name;
string publisher;
string category;
int published_year;
double price;
// Prompt for book infromation
cout << "Name of the Book: ";
getline(cin, name, '\n');
this->name = name;
cout << "Publisher: ";
getline(cin, publisher, '\n');
this->publisher = publisher;
cout << "Category: ";
getline(cin, category, '\n');
this->category = category;
cout << "Published year: ";
cin >> published_year;
this->published_year = published_year;
cout << "Price:";
cin >> price;
this->price = price;
}
name、publisher、category、published_year 和 price 都是 Book 类的私有成员。从标准输入分配那些我得到内存访问冲突!我不明白我哪里出错了。 有什么帮助吗?
这就是从另一个名为 BookStore 的类中调用此函数的方式:
void BookStore::addBook(int No)
{
book[No].setBookProperty();
}
【问题讨论】:
-
这可能与这个函数的调用方式有关。能否也显示调用代码?
-
这有点奇怪!对于第一个赋值,一切正常,这意味着 name 被赋值给类 Book 的成员变量 NAME。当它进入第二个任务时!错误弹出。
-
我把调用函数贴在了qustion里面!
-
BookStore::book的定义是什么,它是如何分配的?如果book[No]不是有效的Book对象,那么在其上调用setBookProperty()将解决您遇到的内存错误。请提供SSCCE 证明您正在尝试做的事情。 -
在下面发布了定义作为答案。