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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
#1

__declspec(property) и с чем его едят - C++

08.09.2011, 11:35. Просмотров 2332. Ответов 5
Метки нет (Все метки)

Что это такое и как это использовать? У меня задание в лабораторной по обычному с++, но вот такая штука имеет место быть. Насколько я понял это какие-то свойства, прикрученные ms но как они используются?

Заголовочный файл где они есть (сама программа представляет собой структуру по хранению данных о студентах):
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
//#include "stdafx.h"
 
#ifndef TYPES_INCLUDE
#define TYPES_INCLUDE
 
#include <string.h>
 
struct Student 
{
    private:
        CopyIfNotNull(char **Dest, const char *Source);
        void FreeField(char **Dest);
        int CheckStud(Student&);
 
        int BYear;
        float AverMark;
 
        char *sName;
        char *name;
        char *pName;
 
    public:
 
// --------------------------------------------------------------------
 
        int GetBYear()
        {
            return  BYear;
        }
        void SetBYear(int Val = 0)
        {
            BYear = Val;
        }
 
        float GetAverMark()
        {
            return AverMark;
        }
        void SetAverMark(float Val)
        {
            AverMark = Val;
        }
 
 
        char* GetSName()
        {
            char *Val = NULL;
            CopyIfNotNull(&Val, sName);
 
            return Val;
        }
        void SetSName(const char *Val)
        {
            CopyIfNotNull(&sName, Val);
        }
 
 
        char* GetName()
        {
            char *Val = NULL;
            CopyIfNotNull(&Val, name);
 
            return Val;
        }
        void SetName(const char *Val)
        {
            CopyIfNotNull(&name, Val);
        }
 
        char* GetPName()
        {
            char *Val = NULL;
            CopyIfNotNull(&Val, pName);
 
            return Val;
        }
        void SetPName(const char *Val)
        {
            CopyIfNotNull(&pName, Val);
        }
 
// --------------------------------------------------------------------
 
        __declspec(property(get = GetBYear, put = SetBYear)) int BY;
        __declspec(property(get = GetAverMark, put = SetAverMark)) float AM;
        __declspec(property(get = GetSName, put = SetSName)) char *SName;
        __declspec(property(get = GetName, put = SetName)) char *Name;
        __declspec(property(get = GetPName, put = SetPName)) char *PName;
        
 
        
        ClearMem();
        SetFields(const char*, const char*, const char*, int, float);
        Student& operator= (Student&);
        int operator!= (Student&);
        int operator== (Student&);
        int operator<= (Student&);
        int operator>= (Student&);
        int operator> (Student&);
        int operator< (Student&);
 
        Student();
        ~Student();
};
 
 
#endif
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2011, 11:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос __declspec(property) и с чем его едят (C++):

TCHAR и с чем его едят - C++
Добрый вечер. Уважаемые знатоки, не подскажете ли вы, как можно преобразовать строку из TCHAR и обратно?

что такое Qt, и с чем его едят? - C++
Здравствуйте, я бы хотел узнать что такое Qt, и как на нем программировать, я слышал что это дополнение к С++, тогда вопросы: - что это...

Что такое This и с чем его едят - C++
Доброго дня/ночи Вот пытаюсь выкурить мануалы по теме &quot;this&quot;. Прочитал надцать листов литературы, но так особо не могу понять - this...

Что такое Класс, и с чем его едят? - C++
собственно это я бы и хотел знать. попытался воспринять самостоятельно - не получилось. прошу, подскажите, кто знает, в каких книгах можно...

Что такое assoc и с чем его едят? - C++
Объясните, пожаалуйста)

что такое istream и с чем его едят ? - C++
здравствуйте. у меня такой вопрос , делаем лабы с перечислениями и структурами и в них появилось istream operator. пытался почитать книжки,...

5
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
08.09.2011, 11:45 #2
http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
08.09.2011, 11:51  [ТС] #3
kazak, туда я забегал уже, но там что-то не слишком понятно, как для начинающего, написано.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
08.09.2011, 12:04 #4
Цитата Сообщение от Gepar Посмотреть сообщение
но там что-то не слишком понятно
Добавляет неявный вызов геттеров/сеттеров для полей. Т.е. пишешь obj.i = 5, а компилятор заменяет это на obj.i_set(5). В С# это делается геттерами/сеттерами по умолчанию с возможностью их подмены, а в С++ от MS их можно создать явно.
Но я бы не советовал ими пользоваться, рефакторинг кода делать сложнее и переносимости никакой.

Добавлено через 2 минуты
Для твоего случая:
__declspec(property(get = GetBYear, put = SetBYear)) int BY;

C++
1
2
obj.BY = 5 /*равнозначно*/  obj.SetBYear(5)
int b = BY /*равнозначно*/ int b = obj.GetBYear()
3
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
08.09.2011, 12:05 #5
Цитата Сообщение от Deviaphan Посмотреть сообщение
Добавляет неявный вызов геттеров/сеттеров для полей.
Ага, в С# это называется свойство класса.
0
TheDarkMax2
15 / 15 / 2
Регистрация: 23.09.2011
Сообщений: 166
19.01.2017, 11:21 #6
А почему порядок переменных у меня развернуло?
C++
1
2
3
__declspec(property(get=GetTime,    put=SetTime))   double      Times[];
void        SetTime(unsigned int i, double T);
double      GetTime(unsigned int i);
Пришлось индекс ставить первым параметром функции, чтобы работало, хотя в примерах он второй.
И вот эта штука неправильно работает.
C++
1
__declspec(property(get=GetDIn, put=SetDIn)) bool DIn[];
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2017, 11:21
Привет! Вот еще темы с ответами:

Модуль: что такое и с чем его едят? - C++
есть задание: что есть модуль, как он создается и как подключается? предполагаю, что это обыкновенный .cpp-файл,- я прав? в таком...

Нюансы синтаксиса: operator-> с чем его едят? - C++
не могли бы вы объяснить что такое -&gt; и что например означает head-&gt;prev=note или it-&gt;next-&gt;prev пожалуйста)только как можно более...

Что это за макрос? И с чем его едят? - C++
Есть две строки. С первой вроде разобрался, поправьте если не совсем. Из книги Лафоре ООП (реализация консольной графики). #ifndef...

Класс-контейнер? Что это такое и с чем его «едят»? - C++
Вечер добрый, столкнулся со следующей проблемой, в общем, есть задание: Создать класс-контейнер, который является абстракцией текста и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
19.01.2017, 11:21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru