Здравствуйте, LuciferMoscow, Вы писали:
LM>Здравствуйте, Bizz, Вы писали: LM>Это LM>sex="m"; LM>выглядит подозрительно.
LM>Какие ошибки выдает(полный текст ошибки+номер строки)? Компилятор?
Вот еще вариант:
#include<iostream>
#include<ctime>
#include<stdlib.h>
#include<cstring>
using namespace std;
class Student {
char* name;
char* surname;
char* middlename;
bool married;
bool children;
bool flat;
bool car;
char* sex;//здесь указывает пол студентаpublic:
Student();
~Student();
friend ostream& operator<<(ostream& out, Student& );
friend istream& operator>>(istream& in, Student& );
//нужно дописать методы для ввода данных для студентов, для сложения студентов (вроде как поженить),
//для вычитания студентов (развести с разделом имущества)
};
ostream& operator<<(ostream& out, Student& obj)
{
out<<"name="<<obj.name;
out<<"Surname="<<obj.surname;
out<<"Middlename="<<obj.middlename;
out<<"Married="<<obj.married;
out<<"Flat="<<obj.flat;
out<<"Car="<<obj.car;
out<<"Children="<<obj.children;
return out;
}
istream& operator>>(istream& in, Student& obj)
{
cout<<"Name: ";
in>>obj.name;
cout<<"Surname: ";
in>>obj.surname;
cout<<"Middlename: ";
in>>obj.middlename;
cout<<"Married: ";
in>>obj.married;
cout<<"Flat: ";
in>>obj.flat;
cout<<"Car: ";
in>>obj.car;
cout<<"Any children: ";
in>>obj.children;
return in;
}
Student::Student(void)//вот еще вариант конструктора...
{
name=new char[2];
strcpy(name, "");
surname=new char[2];
strcpy(surname, "");
middlename=new char[2];
strcpy(middlename, "");
sex="m";//здесь указывает пол студента
car=false;
flat=false;
children=false;
married=false;
}
Student::~Student(void)
{
delete []name;
delete[]surname;
delete []middlename;
}
void main()
{
Student s;
cout<<s.sex<<endl;
}
Сообщения компилятора:
_CRT_SECURE_NO_DEPRECATE. See online help for details.'
d:\docs\visual studio 2005\21предв\21.cpp(120) : error C2248: 'Student::sex' : cannot access private member declared in class 'Student'
d:\docs\visual studio 2005\21предв\21.cpp(20) : see declaration of 'Student::sex'
d:\docs\visual studio 2005\21предв\21.cpp(12) : see declaration of 'Student'
Build log was saved at "file://d:\Docs\Visual Studio 2005\21предв\Debug\BuildLog.htm"
21 - 1 error(s), 3 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
плохо переписал, НЕЗАЧОТ,
если студентов так учить, то скоро с++ будет брать не меньше ресурсов чем дотнет.
для поля "пол" можно использовать энумератор, а не строку, и логичнее былобы для описания человека использовать клас Person, еще создать класс для описания адреса, и не валить все в одну кучу.
Спасибо, попробую этот вариант
Просто заморочился совсем, задача несложная. Там еще сложить студентов нужно(поженить), потом вычесть(развести с разделом имущества).
Горит на экзамен....
Здравствуйте, Bizz, Вы писали:
<skipped> B> //нужно дописать методы для ввода данных для студентов, для сложения студентов (вроде как поженить), B> //для вычитания студентов (развести с разделом имущества)
<skipped>
Re[3]: конструктор по умолчанию
От:
Аноним
Дата:
19.05.06 12:51
Оценка:
B>Сообщения компилятора:
B>_CRT_SECURE_NO_DEPRECATE. See online help for details.' B>d:\docs\visual studio 2005\21предв\21.cpp(120) : error C2248: 'Student::sex' : cannot access private member declared in class 'Student' B> d:\docs\visual studio 2005\21предв\21.cpp(20) : see declaration of 'Student::sex' B> d:\docs\visual studio 2005\21предв\21.cpp(12) : see declaration of 'Student' B>Build log was saved at "file://d:\Docs\Visual Studio 2005\21предв\Debug\BuildLog.htm" B>21 — 1 error(s), 3 warning(s) B>========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Уже лучше. И которая из строк у нас с номером 120?
Но это ничего не значит, потому что работать не будет, и вот почему: реализация operator>> некорректа (я так понимаю, что начало этой историиздесь).
Ну откуда такая уверенность, что для любого имени хватит одного символа, место под который выделяется в конструкторе по умолчанию?
Кроме того, отсутствие конструктора копирования и оператора присваивания тянет за собой ошибку повторного удаления, т.е. все рухнет, как только в программе появятся копии объектов.
В общем так: если есть возможность, то вместо сырых указателей используй std::string. Если нет, то определяй коснтруктор копирования и оператор присваивания, и пиши operator>> примерно в таком духе:
std::istream& operator>>(std::istream& in, Student& s)
{
char buff[64] = {0};
std::cout<<"Name: ";
in >> buff;
delete [] s.name;
s.name = new char[strlen(buff)+1];
strcpy(s.name, buff);
//...return in;
}
Здравствуйте, LuciferMoscow, Вы писали:
LM>Здравствуйте, Bizz, Вы писали: LM><skipped> B>> //нужно дописать методы для ввода данных для студентов, для сложения студентов (вроде как поженить), B>> //для вычитания студентов (развести с разделом имущества) LM><skipped> LM>
Да еще не забыть при сложении что однополые браки у нас запрещены (кинуть std::bad_cast если 2 гея хотят пожениться)
Интересно препод раньше наверное в отделе кадров сидел
Ничего другого не мог придумать
Предлагаю переехать с этим топиком в юмор
!0xDEAD
Re[3]: конструктор по умолчанию
От:
Аноним
Дата:
19.05.06 12:56
Оценка:
Здравствуйте, Bizz, Вы писали:
B>Спасибо, попробую этот вариант B>Просто заморочился совсем, задача несложная. Там еще сложить студентов нужно(поженить), потом вычесть(развести с разделом имущества). B>Горит на экзамен....
Экзамен:
С : Я не подготовился
П : Почему?
С : Времени не было
П : Девки ?
С : нет
П : Вы меня разочаровываете
------ Build started: Project: 21, Configuration: Debug Win32 ------
Compiling...
21.cpp
d:\docs\visual studio 2005\21предв\21.cpp(61) : warning C4996: 'strcpy' was declared deprecated
c:\program files\microsoft visual studio 8\vc\include\string.h(73) : see declaration of 'strcpy'
Message: 'This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
d:\docs\visual studio 2005\21предв\21.cpp(63) : warning C4996: 'strcpy' was declared deprecated
c:\program files\microsoft visual studio 8\vc\include\string.h(73) : see declaration of 'strcpy'
Message: 'This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
d:\docs\visual studio 2005\21предв\21.cpp(65) : warning C4996: 'strcpy' was declared deprecated
c:\program files\microsoft visual studio 8\vc\include\string.h(73) : see declaration of 'strcpy'
Message: 'This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
d:\docs\visual studio 2005\21предв\21.cpp(84) : error C2248: 'Student::sex' : cannot access private member declared in class 'Student'
d:\docs\visual studio 2005\21предв\21.cpp(15) : see declaration of 'Student::sex'
d:\docs\visual studio 2005\21предв\21.cpp(7) : see declaration of 'Student'
Build log was saved at "file://d:\Docs\Visual Studio 2005\21предв\Debug\BuildLog.htm"
21 — 1 error(s), 3 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Здравствуйте, Bizz, Вы писали:
B>Я перекомпилил:
B>------ Build started: Project: 21, Configuration: Debug Win32 ------ B>Compiling... B>21.cpp B>d:\docs\visual studio 2005\21предв\21.cpp(61) : warning C4996: 'strcpy' was declared deprecated B> c:\program files\microsoft visual studio 8\vc\include\string.h(73) : see declaration of 'strcpy' B> Message: 'This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' B>d:\docs\visual studio 2005\21предв\21.cpp(63) : warning C4996: 'strcpy' was declared deprecated B> c:\program files\microsoft visual studio 8\vc\include\string.h(73) : see declaration of 'strcpy' B> Message: 'This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' B>d:\docs\visual studio 2005\21предв\21.cpp(65) : warning C4996: 'strcpy' was declared deprecated B> c:\program files\microsoft visual studio 8\vc\include\string.h(73) : see declaration of 'strcpy' B> Message: 'This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' B>d:\docs\visual studio 2005\21предв\21.cpp(84) : error C2248: 'Student::sex' : cannot access private member declared in class 'Student' B> d:\docs\visual studio 2005\21предв\21.cpp(15) : see declaration of 'Student::sex' B> d:\docs\visual studio 2005\21предв\21.cpp(7) : see declaration of 'Student' B>Build log was saved at "file://d:\Docs\Visual Studio 2005\21предв\Debug\BuildLog.htm" B>21 — 1 error(s), 3 warning(s) B>========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Блин кончай людям мозги морочить
написано
d:\docs\visual studio 2005\21предв\21.cpp(84) : error C2248: 'Student::sex' : cannot access private member declared in class 'Student'
покажи, блин, строку 84 файла 21.cpp
Телепатоф здесь нет чтобы угадывать где у тебя ошибка