我试图创建一个动态数组,然后使用输入文件中的文本填充该数组,但我一直得到这个错误。我找了好几个小时的答案,但他们似乎都进入了向量。我也不认为我缺少任何库。
int main()
{
// Parameter - Instance 1
Grocery g1("NA", 0, "NA");
g1.setName("Milk");
g1.setQuant("1");
g1.setUnit("Bottle");
Grocery g2(g1); // Calls copy constructor
// Default constructor - Instance 3
//Grocery g3();
// Operator =
Grocery g4;
cout << "Operator = Running" << endl;
g4 = g2;
cout << g4.getName() << endl;
cout << g4.getQuant() << endl;
cout << g4.getUnit() << endl << endl;
// Operator <<
cout << "Operator<< Running" << endl;
Grocery g5("Salt", "1", "Teaspoon");
cout << g5 << endl;
//cout << g5.getName();
//cout << g5.getQuant();
//cout << g5.getUnit();
// Dynamic Array of Grocery
Grocery* groceryArray;
groceryArray = new Grocery[3];
ifstream inputFile;
inputFile.open("fileName.txt");
for (int i = 0; i < 3; i++)
{
inputFile >> groceryArray[i].setName;
cout >> groceryArray[i].setName;
}
inputFile.close();
delete[]groceryArray;
return 0;
}
//Grocery.h
#pragma once
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class Grocery
{
private:
string* m_name;
string* m_quant;
string* m_unit;
public:
Grocery(); // Default constructor
Grocery(string n, string q, string u); // Parametered constructor
~Grocery(); // Destructor
Grocery(const Grocery& rhs); // Copy constructor
Grocery& operator=(const Grocery& rhs); // Operator=
friend ostream& operator<<(ostream& out, const Grocery& rhs); //Operator>>
string getName();
void setName(string n);
string getQuant();
void setQuant(string q);
string getUnit();
void setUnit(string u);
};
当运行它时,我得到了两个错误:错误C2676二进制'>>': 'std::ostream'没有定义这个操作符或转换为预定义操作符可接受的类型 错误C2679二进制'>>': 没有找到可以接受'overloaded-function'类型的右手操作数的操作符(或没有可接受的转换)。
在C++中,为了直接从用户那里获得输入,你必须应用>>运算符,请看下面的例子 运算符>>从字符串中获得单项式。
istream& operator>>(istream& input, Monomial& mon){
char str[SIZE];
cin.getline(str, SIZE);
mon.updateMonomialString(str, mon.coefficientNum, mon.degreeNum);
return input;
}
阅读更多关于运营商>>实施的内容。喏
另一件事 getters
应该返回stringsinfo等。而 setters
应设置值对象等。