Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2011, 18:46   #1
teapot
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 23
Вопрос Не работает __property

Добрый день!
В классе пытаюсь описать __property.

Вот сам класс:
Код:
class TPNumber
{
   float n;
   int b;
   int c;

   //вместо этой функции хочу сделать свойство
   float GetNumber()
   {
      return n;
   };
   int GetSystem()
   {
      return b;
   };
   int GetPrecision()
   {
      return c;
   };
   //void SetNumber(float n);

   public:
     TPNumber (float num=0, int sys=0, int precision=0);
     TPNumber (AnsiString snum,AnsiString ssys, AnsiString spr);

     TPNumber Copy();
     TPNumber Sum(TPNumber operand);
     TPNumber Multiply(TPNumber operand);
     TPNumber Subtraction(TPNumber operand);
     TPNumber Divide(TPNumber operand);

     void Display();

     bool Compare(TPNumber operand, AnsiString operation);

   //в паблике определяю само свойство     
   __property float Num = {read=GetNumber};
};
затем пытаюсь использовать это свойство в головной части:
Код:
TPNumber z(125,16,0);
float a;
a=z.Num;
однако при компиляции возникает ошибка
[C++ Error] Main.cpp(45): E2316 'Num' is not a member of 'TPNumber'

Никак не могу сообразить, в чём дело. Остальные методы этого класса работают, а свойство почему-то нет.
teapot вне форума Ответить с цитированием
Старый 11.04.2011, 08:50   #2
Ирина Сергеевна
Пользователь
 
Регистрация: 20.05.2009
Сообщений: 17
По умолчанию

Обязательным ли является требование использовать __property? Может, просто сразу хорошо написать конструктор?
Код:
TPNumber ( float numNew, int sysNew, int precisionNew):
                n(numNew), b(sysNew), c(precisionNew) {}
The impossible is possible, if you really want..
Ирина Сергеевна вне форума Ответить с цитированием
Старый 11.04.2011, 09:01   #3
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Правильно она вам пишет:
[C++ Error] Main.cpp(45): E2316 'Num' - не член 'TPNumber'
Сделайте его членом класса и порядок.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 11.04.2011, 11:41   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Забавненько
pu4koff вне форума Ответить с цитированием
Старый 11.04.2011, 18:10   #5
teapot
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Сделайте его членом класса и порядок.
а не подскажете, где и что конкретно нужно прописать?
вставляла float Num и в private, и в public, та же самая ошибка
teapot вне форума Ответить с цитированием
Старый 11.04.2011, 18:39   #6
teapot
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Ирина Сергеевна Посмотреть сообщение
Обязательным ли является требование использовать __property?
к сожаланию, да, такую выдали спецификацию.
teapot вне форума Ответить с цитированием
Старый 11.04.2011, 18:47   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Приведите полный код (.cpp и .h файлы) вместе с заголовочным вайлом.
Как-то Вы странно класс пишете.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 11.04.2011, 19:01   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от teapot Посмотреть сообщение
а не подскажете, где и что конкретно нужно прописать?
вставляла float Num и в private, и в public, та же самая ошибка
Синтаксически всё верно. Либо что-то не так делаете, либо билдер тупит.
pu4koff вне форума Ответить с цитированием
Старый 11.04.2011, 19:04   #9
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Синтаксически всё верно. Либо что-то не так делаете, либо билдер тупит.
Я пытался откомпилить но не известно файлы каких библиотек используются. Мне он выдал Linker error.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 11.04.2011, 19:11   #10
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Я пытался откомпилить но не известно файлы каких библиотек используются. Мне он выдал Linker error.
Ну линкер - это уже следующий шаг компиляции. У ТС программа валится раньше непонятно из-за чего. Значит таки с кодом всё нормально и либо ТС его не туда суёт, либо IDE занимается парадоксами (и виндовс - сын ошибок трудных и Борланд парадоксов друг).

Последний раз редактировалось pu4koff; 11.04.2011 в 19:15.
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? >>STINGER<< Помощь студентам 4 08.03.2011 09:56
почему интеренет на Xp не работает, а на семерке работает Lenura Windows 18 04.10.2010 12:04
TP7 чтение из файла, работает но не работает!? Qousio Помощь студентам 7 02.06.2009 09:37
Библиотека НЕ работает с 2008, но работает с 2000 SQL namenike Общие вопросы C/C++ 0 26.05.2009 11:04
Проблема с UserForm. То работает, то НЕ работает Maxx Microsoft Office Excel 6 19.11.2008 14:51