название говорит само за себя
Это мой код: У меня есть класс House, где я определяю значения.
class HOUSE
{
public:
int id;
string 1;
string 2;
string 3;
int an;
};
template<class Type>
class table
{
public:
vector<Type> V;
//double inceput;
//double sfirsit;
//int comparatii;
//int interschimbari;
public:
table();
void print();
void liniar();
};
template<class Type>
table<Type>::table()
{
ifstream file("file.txt");
ifstream file1("file1.txt");
if (file.fail() || file1.fail())
{
cerr << "Eroare la deschiderea fisierului!" << endl;
_getch();
exit(1);
}
HOUSE* value = new HOUSE;
while (!file.eof() || file1.fail())
{
file >> value->id;
file >> value->tara;
file >> value->brand;
file >> value->culoare;
file >> value->an;
this->V.push_back(*value);
}
file.close();
}
Функция печати для значений
template<class Type>
void table<Type>::print()
{
cout << endl << setw(50) << "AFISAREA DATELOR" << endl;
cout << setw(5) << "Id" << setw(15) << "1" << setw(20) << "2" << setw(17) << "3" << setw(20) << "an" << endl << endl;
for (int i = 0; i < this->V.size(); i++)
{
cout << setw(5) << this->V.at(i).id << setw(15)
<< this->V.at(i).1<< setw(17)
<< this->V.at(i).2<< setw(17)
<< this->V.at(i).3<< setw(25)
<< this->V.at(i).an << endl;
}
cout << endl << "Dimensiunea tabelului n= " << V.size() << endl;
}
{
file >> value->id;
file >> value->1;
file >> value->2;
file >> value->3;
file >> value->an;
this->V.push_back(*value);
}
file.close();
}
в основном
int main() {
table<MOBILE>* file = new table<MOBILE>();
table<MOBILE>* file1 = new table<MOBILE>();
file ->print();
file1 ->print();
Это полный код по запросу. Нужно как-то распечатать данные из файла1 и файла2. Спасибо
Проблема idk, если называется правильно. Так как
файл ->печать();
файл1 -> печать ();
оба печатают данные только из файла
Ошибок нет вообще
Каков ваш вопрос об этом коде?
Вы не включили код для MOBILE. Я не могу поверить, что этот код компилируется с ошибкой, этот код string 1; является ошибкой компиляции. Кажется, есть и другие ошибки.
Если вы хотите, чтобы код печатал файлы filetxt и file1.txt, вам нужно передать имя файла для использования в конструктор table.
table<MOBILE>* файл = новая таблица<MOBILE>(); table<MOBILE>* file1 = new table<MOBILE>(); должно быть table<HOUSE>* file = new table<HOUSE>(); таблица<ДОМ>* файл1 = новая таблица<ДОМ>(); Я не могу заставить его выводить содержимое из обоих файлов. файл -> печать (); файл1 -> печать (); оба выводят содержимое из файла, в то время как файл и файл1 имеют разное содержимое
Код, который вы разместили, не компилируется, но вы говорите, что это так. Это должно быть вставлено как один непрерывный фрагмент кода. См.:Как создать минимальный, полный и проверяемый пример
Размещенный код был для информационных целей, где могут быть изменения/ошибки. Джон решил мою проблему. Спасибо всем





В вашем коде много ошибок. но я проигнорирую это и просто отвечу на то, что, как мне кажется, является вашим настоящим вопросом.
Вам нужны два объекта table, один из которых читает из file.txt, а другой читает из file1.txt. Для этого вы должны передать имя файла в конструктор table::table, чтобы он знал, из какого файла читать. Нравится
template<class Type>
class table
{
...
public:
table(const char* filename); // constructor takes filename parameter
...
};
template<class Type>
table<Type>::table(const char* filename)
{
ifstream file(filename); // open filename
if (file.fail())
...
int main() {
table<MOBILE>* file = new table<MOBILE>("file.txt"); // read from file.txt
table<MOBILE>* file1 = new table<MOBILE>("file1.txt"); // read from file1.txt
file ->print();
file1 ->print();
}
Спасибо! Это решило мою проблему. Что касается других противоречий, то речь идет о шаблонах. Я не беспокоюсь о них. Ваше здоровье