我有一个代码。代码中有一个 Machine 类。底线是我必须使用带参数的构造函数创建第一个对象,然后使用默认构造函数创建第二个对象。第一个似乎没有问题,但第二个 - 一堆。尝试编译时有 4 个严重错误。我不明白为什么不是...
编译器发誓的行:
fin << M2.name << "" << M2.kol << " " << M2.kolH;
M2.SHOW();
错误:
Ошибка 4 error C2228: выражение слева от ".name" должно представлять класс, структуру или объединение
Ошибка 5 error C2228: выражение слева от ".kol" должно представлять класс, структуру или объединение
Ошибка 6 error C2228: выражение слева от ".kolH" должно представлять класс, структуру или объединение
Ошибка 7 error C2228: выражение слева от ".SHOW" должно представлять класс, структуру или объединение
编码:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class Machine {
public:
char name[50]; // название станка
float kol; // количество отработанных часов
float kolH; // количество изготовленных деталей за час
void TEST(void);
void INIT(void);
void SHOW(void);
Machine();
Machine(const char *na, float ko, float koH);
Machine(const Machine & obj);
~Machine();
};
Machine::Machine() {
cout << endl << "--------------------------------------------------" << endl;
cout << "Этот обьект был создан в конструкторе по умолчанию.\n";
strcpy(name, "");
kol = 0;
kolH = 0;
}
Machine::Machine(const char *na, float ko, float koH) {
cout << endl << "--------------------------------------------------" << endl;
cout << "Этот обьект был создан в конструкторе с параметрами.\n";
strcpy(name, na);
kol = ko;
kolH = koH;
}
Machine::Machine(const Machine & obj) {
cout << endl << "--------------------------------------------------" << endl;
cout << "Этот обьект был создан в конструкторе копирования.\n";
strcpy(name, obj.name);
kol = obj.kol;
kolH = obj.kolH;
}
Machine::~Machine() {
cout << endl << "--------------------------------------------------" << endl;
cout << "Удаление объекта деструктором.\n";
}
void Machine::SHOW(void) {
cout << endl << "--------------------------------------------------" << endl;
cout << "Информация о станке:\n";
cout << "\nНазвание станка > " << name;
cout << "\nКоличество отработанных часов > " << kol;
cout << "\nКоличество изготовленных деталей за час > " << kolH;
}
void Machine::INIT(void) {
cout << endl << "--------------------------------------------------" << endl;
cout << "Введите данные о станке:\n";
cout << "\nНазвание > "; cin >> name;
cout << "\nКоличество отработанных часов > "; cin >> kol;
cout << "\nКоличество изготовленных деталей за час > "; cin >> kolH;
}
int main() {
setlocale(0, "");
Machine M1("Станок большой", 32, 64.5);
M1.SHOW();
Machine M2();
ofstream fout;
fout.open("1.txt");
fout << M1.name << "" << M1.kol << " " << M1.kolH;
fout.close();
ifstream fin;
fin.open("1.txt");
fin << M2.name << "" << M2.kol << " " << M2.kolH;
fin.close();
cout << "\nИнформация про станок 2:\n";
M2.SHOW();
fin.open("1.txt");
fin.seekg(0);
cout << "\nПотоковый вывод содержания 1.txt\n";
char ch;
while(fin.get(ch))
cout << ch;
cout << "\nВывод закончен\n";
fin.close();
return 0;
}
它是一个不带参数并返回一个对象的函数的声明 。写
M2
Machine
或者
然而 - 好吧,谁输出到输入流?..
或者
ofstream
,或者>>
……