- Type casting error in Visual C
- #include "stdafx.h"
- #include "fstream"
- #include "conio.h"
- #include "string"
- #include "iostream"
- using namespace std;
- int count = 0;
- class student
- {
- char name[50], grade;
- float mks;
- public:
- student()
- {
- mks = 0;
- }
- void getdata();
- void putdata();
- void moddata();
- };
- void student :: getdata()
- {
- cout << "Enter data for record number: " << "(++count)" << ": ";
- cout << "nEnter name of the student: ";
- cin >> name;
- cout << "nEnter marks: ";
- cin >> mks;
- cout << "nEnter grade: ";
- cin >> grade;
- _getch();
- }
- void student :: putdata()
- {
- cout << "nDisplaying data of required record: ";
- cout << "nName: " << name << "nMarks: " << mks << "nGrade: " << grade;
- _getch();
- }
- void student :: moddata()
- {
- cout << "Enter correct details:-" << endl;
- cout << "Enter name: ";
- cin >> name;
- cout << "nEnter marks: ";
- cin >> mks;
- cout << "nEnter grade: ";
- cin >> grade;
- _getch();
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- fstream stu ("stud.txt", ios::in | ios::out);
- student s1;
- char ans = 'y';
- int ch, offset, mrec;
- do
- {
- cout << "nMAIN MENU:" << endl;
- cout << "1. Add Record" << endl;
- cout << "2. Modify Record" << endl;
- cout << "3. Display Record" << endl;
- cout << "4. Exit" << endl;
- cout << "Enter your choice (1-4): ";
- cin >> ch;
- switch (ch)
- {
- case 1: s1.getdata();
- stu.write ( (char*) &s1, sizeof (student) );
- break;
- case 2: if (!count)
- {
- cout << "No record added yet. Type option number first.";
- _getch();
- break;
- }
- cout << "Enter the record number to be modified: ";
- cin >> mrec;
- if (mrec > count)
- {
- cout << "Error. Only " << count << " records have been added.";
- _getch();
- break;
- }
- offset = (mrec - 1)* sizeof (student);
- stu.seekg (offset);
- stu.read ( (char*) &s1, sizeof (student) ); //C2440
- s1.putdata();
- cout << "Do you want to modify your record (y/n): ";
- cin >> ans;
- if (ans == 'y' || ans == 'Y')
- {
- s1.moddata();
- stu.seekg(offset);
- stu.write ( (char)* &s1, sizeof (student) );
- break;
- }
- break;
- case 3: if (!count)
- {
- cout << "No record added yet. Type option number first.";
- _getch();
- break;
- }
- cout << "Enter record number to be displayed: ";
- cin >> mrec;
- if (mrec > count)
- {
- cout << "Error. Only " << count << " records have been added.";
- _getch();
- break;
- }
- offset = (mrec - 1)*, sizeof (student);
- stu.seekg (offset);
- stu.read ( (char)* &s1, sizeof (student) ); //C2440
- s1.putdata();
- break;
- case 4: break;
- default: cout << "Wrong choice.";
- }
- } while (ch != 4);
- _getch();
- return 0;
- }
- C2440: 'type cast' : cannot convert from 'student' to 'char' 1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called