Форум программистов, компьютерный форум CyberForum.ru

Класс "Студент" - Как записать ссылку на функцию структуры? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Поменять местами 2 половины строки // С++ http://www.cyberforum.ru/cpp-beginners/thread358805.html
Всем привет. Visual C++. Задание: На входе строка. Необходимо разделить её на 2 равные части, и поменять их местами. Например "abcdefghijklmnopq" ->"jklmnopqabcdefghi" Вот, что я написал: #include <stdio.h> int main() { int i=0,r=0; char s,k;
C++ Построить алгоритм, определяющий, существует ли треугольник с заданными длинами сторон a, b и c. 1.Построить алгоритм, определяющий, существует ли треугольник с заданными длинами сторон a, b и c. 2.Даны три вещественных положительных числа a, b, c. Определите, пройдет ли мяч радиуса а через прямоугольное отверстие размером b*c. Буду очень благодарен http://www.cyberforum.ru/cpp-beginners/thread358801.html
C++ Вычислить значение функции арккосинуса, заданной с помощью ряда Тейлора
Вычислить и вывести на экран в виде таблицы значение функции, заданной с помощью ряда Тейлора, на интервале от Хнач до Хкон с шагом dX с точностью E. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда. Для вычисления последующего члена ряда использовать рекуррентную формулу.
Не могу довести до ума..а хотя все эллиментарно...( C++
Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Xнач до Хкон с шагом dX. Формула -ax-c при с>0 u !=0 F= x-a/-c при с>0 и х=0 bx/c-a в остальных случаях где a, b, c – действительные числа. Функция F должна принимать действительное значение, если выражение (Ац ИЛИ Вц) И НЕ(Ац ИЛИ Сц ) не равно нулю, и целое значение - в противном...
C++ В чем ошибка, не считает...ответ выдает по нулям(((( http://www.cyberforum.ru/cpp-beginners/thread358781.html
#include <stdio.h> #include <windows.h> #include <math.h> char buf ; char*RUS(const char*text) { CharToOem(text,buf); return buf; }
C++ Очереди Привет всем!!!)) Вот у меня такая задачка: необходимо реализовать очередь, содержащую запись состоящую из двух полей: имени и фамилии. Напечатать в порядке поступления фамилии всех людей с заданным именем. Подскажите с алгоритмом для данной задачи? как организовать такую структуру для очереди? что в неё будет входить? и какие функции-методы нужно использовать? подробнее

Показать сообщение отдельно
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,508
01.10.2011, 00:45     Класс "Студент" - Как записать ссылку на функцию структуры?
Собственно создаю класс студенты, захотелось мне чего-то впихнуть сюда итератор (свой вариант итератора, если это можно так назвать).

Текущий вопрос:
как записать ссылку на функцию структуры? Нужно это чтобы в моём итераторе была возможность как в stl писать Iterat.first ?
Если точнее то нужно сделать указатель на функцию getFullname()
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
class Students 
{
    friend class StudentsIterator;
    struct ListItem
    {
        //////////////////////////info////////////////////
        string fullname;
        string group;
        int year;
        int average;
        ListItem *Next;
 
        ////////////////////metods///////////////////////////////
 
        ListItem()
        {
            fullname="";
            year=0;
            average=0;
            group="";
            Next=NULL;
        }
 
        ListItem(string &f,int y, int a, string &g)
        {
            setFullname(f);
            setYear(y);
            setAverage(a);
            setGroup(g);
            Next=NULL;
        }
 
 
        void setFullname(string &data)
        {fullname=data;}
 
        string getFullname() // ЭТО!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        {return fullname;}
 
        void setYear(int y)
        {
            year=((y>=0 && y<=2012) ? y : -1);
            if (y==-1)
             throw Exception("wrong year");
        }
 
        int getYear()
        {return year;}
 
        void setAverage(int a)
        {
            average=((a>=0 && a<=100) ? a: -1);
            if (average==-1)
             throw Exception("wrong average");
        }
 
        int getAverage()
        {return average;}
 
        void setGroup(string &g)
        {group=g;}
 
        string getGroup()
        {return group;}
 
    };
...
};
? В идеале было бы вообще чтобы если вызывается просто Iterat.first для печати или чтения то вызывалась функция getFullname() из ListItem, а если идёт попытка присвоить значение Iterat.first то вызывалась функция setFullname, хотя вот это вот "в идеале" моё помоему реализовать не удастся я так подозреваю ...

Мой класс итератор, а точнее набросок, если надо:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class StudentsIterator
{
    private:
    Students::ListItem* ListPtr;
    public:
 
   const string& first=&ListPtr->getFullname(); // Это не реализовано так как не знаю как написать
 
    StudentsIterator():ListPtr(NULL){}
 
    StudentsIterator(const Students &right)
    {
        *this=right;
    }
 
    StudentsIterator(Students::ListItem* right)
    {
        *this=right;
    }
 
 
    StudentsIterator* operator=(const Students &right)
    {
        ListPtr=right.Current;
        return this;
    }
 
    //для указателей на элемент, например на начало или конец списка
    StudentsIterator* operator=(Students::ListItem* right)
    {
        ListPtr=right;
        return this;
    }
 
    Students::ListItem* where(){return ListPtr;}
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru