【发布时间】:2020-04-06 21:14:02
【问题描述】:
Product **products;
int numProducts = 0;
void setup()
{
ifstream finput("products.txt");
//get # of products first.
finput >> numProducts;
products = new Product* [numProducts];
//get product codes, names & prices.
for(int i=0; i<numProducts; i++) {
products[i] = new Product;
finput >> products[i]->getCode() >> products[i]->getName() >> products[i]->getPrice();
}
}
我收到此行的“二进制表达式的无效操作数”错误:
finput >> products[i]->getCode() >> products[i]->getName() >> products[i]->getPrice();
我需要运算符重载>> 吗?我该怎么做?
【问题讨论】:
-
您不一定需要重载>>,但这是解决上述问题的合理方法。另一种方法是将值读入变量,然后使用您的类设置器设置数据成员。
-
为什么有这么多指针?
Product **products; products = new Product* [numProducts]; products[i] = new Product;少一个指针Product *products; products = new Product [numProducts];代码会更简单。没有理由使用两级指针(实际上甚至没有理由使用一级,但是两级只是过度)。
标签: c++ overloading operator-keyword