Здравствуйте, к вам пришла студентота которая делает лабы за деньги людям из других универов и у неё (меня) проблемы надеюсь сосач их решитЗадача:Абстрактный класс Person,потомки Student, Teacher, Applicantв Person объявлены три поля - имя, дата рождения, факультетв Teacher два поля - стаж и должность,в Student одно - курс,в Applicant дополнительных полей не объявляется.Насколько я понял, экземпляр Teacher к примеру будет содержать пять полей - три из класса Person и два своих.Задача стоит реализовать чтение из файла массива структур, я не вполне понимаю как выделять под это память. В файле формат записи таков - пять строк (по числу максимального количества полей), пустая строка, следующие пять строк (следующая запись). Если на месте одной из записей к примеру данные объекта класса Applicant, то у него три поля заполнены, а еще два являются строками "n/a".Варианты решения:1) Выделить память под массив Person. Код отказывается собираться, т.к. родительский класс не содержит некоторых полей потомков (ну когда я пытаюсь записать значение курса в поле объекта Person, оказывается что оно необязательно там будет).2) Выделить память под массив Teacher. Должно работать, но вроде бы так неправильно.3) Я не понял, как это должно работать, вот код, найденный в гугле:>Teacher[] arrPtr = new Person[allocCnt] >{ >new Student(), >new Applicant(), >new Teacher()> };Не компилируется поскольку allocCnt должна быть константой (у меня это счетчик, в который заносится информация о количестве записей в файле, ну один проход по файлу чтобы посчитать строки, второй чтобы позаносить в созданный массив данные)4) Считать отдельно количество записей каждого дочернего класса, заведя три счетчика, и выделить три массива. Так данные перемешиваются в памяти относительно того что было в файле а еще это муторно работать с тремя массивами. Хочется сделать красиво, а дедлайн был вчера вечером близок.Как сделать задачу "правильно"? Есть ли варианты? В какую сторону копать?
Забыл сказать, на чем все это делается - C#.
>>894000 (OP)Сделаю за $100.
Зачем берешь раз не умеешь? Person[] arr = new Person[<забронированное место>] теперь в arr ты можешь добавлять любой класс-потомок Person'a. Но лучше используй списки, так как не знаешь сколько объектов в файле.
>>894062Не слушай его, сделаю за 85$.
>>894174Акция, специальная цена, действует час: 84,95
>>894074Вот именно что я НЕ могу добавлять в arr любой потомок. Ошибка на этапе компиляции, мол в классе Person не объявлено одно из полей потомка, с которым я пытаюсь где-то в цикле работать.
>>894421Лолка, конечно так нельзя. У Person нет поля, ты сначала должен привести к нужному типу и тогда использовать.
Пиздец блядь, это хуйло еще и бабки берет за "выполнение" лаб.
>>894485Большое спасибо, привел к потомку и все заработало.
>>894488За что хочу за то бабки и беру, законом не запрещено, а ещё это на 20% круче чем называть человека в интернетах хуйлом, хуйло.
http://pastebin.com/w2guB5D0Что-то у меня не получается. "Ссылка на объект не указывает на экземпляр объекта" при попытке записывать в массив объектов. Попробовал создавать массив Teacher - всё то же самое.
Очень здравая идея насчет списков, но по словам заказчика сделать нужно используя массивы.
>>894000 (OP)Лол и такой жалкий мусор как ты умудряется наебывать людей на бабло? Еще и местную школоту хочешь прокинуть? Ты охуенен, парень.
>>894552Не знаю где тут наебка, я морочу себе голову вместо заказчика, решая его задачу, вот и все.В общем разобрался я что к чему, местной школоте тоже спасибо, но если бы даже тут мне подсказали как надо, разве это было бы "прокинуть"? Хз почему у тебя с меня так бомбит.
В общем нихуя я не разобрался и тот код по-прежнему не работает.
http://pastebin.com/4K0VRLsbА вот этот работает. Интересно, каким образом new выделяет память для массива arrPtr? Пусть это будет черная магия.