Форум: "Начинающим";
Текущий архив: 2010.02.14;
Скачать: [xml.tar.bz2];
ВнизКак в Delphi работать с операторами? Найти похожие ветки
← →
S-C-L © (2009-12-16 20:06) [0]Люди помогите!!!
Есть код на С++:
//! Array operator
float & operator[]( unsigned int i )
{
if ( i < 4 ) return xyzw[i];
}
//! Const array operator
const float & operator[]( unsigned int i ) const
{
if ( i < 4 ) return xyzw[i];
}
Нужно его переделать на Delphi 7.
Подскажите как.
← →
MBo © (2009-12-16 20:14) [1]класс со свойством-массивом
← →
S-C-L © (2009-12-16 20:21) [2]Да.
Нужно сделать класс со свойством-массивом.
чтобы к нему можно было обращаться
a := MyClass[num];
Ценю только дельные советы!
← →
Nucer (2009-12-16 20:23) [3]
TMyItems = class
private
...
function GetItem(Index: Integer): TMyItem;
public
property Items[Index: Integer]: TMyItem read GetItem; default;
...
end;
← →
MBo © (2009-12-16 20:27) [4]Ценихелп,источникзнаний
блин,пробелсломался:(
← →
S-C-L © (2009-12-16 20:32) [5]
> Nucer (16.12.09 20:23) [3]
Спасибо за помощь!!!
← →
S-C-L © (2009-12-16 20:40) [6]А как в этом случае сделать оператор +=?
//! Add-equals operator
Vector2 & operator+=( const Vector2 & v )
{
xy[0] += v.xy[0];
xy[1] += v.xy[1];
return *this;
}
//! Add operator
Vector2 operator+( const Vector2 & v ) const
{
Vector2 w( *this );
return ( w += v );
}
//! Minus-equals operator
Vector2 & operator-=( const Vector2 & v )
{
xy[0] -= v.xy[0];
xy[1] -= v.xy[1];
return *this;
}
//! Minus operator
Vector2 operator-( const Vector2 & v ) const
{
Vector2 w( *this );
return ( w -= v );
}
← →
MBo © (2009-12-16 20:47) [7]Никак. В Д7 перегрузки операторов нет, только индексированные свойства.
Для вариантов что-то такое было только.
С Д2006 можно перегружать операторы для записей (однако операторы += и т.п. - недельфийские, и соответственно перегружать нечего)
← →
S-C-L © (2009-12-16 20:50) [8]
> MBo © (16.12.09 20:47) [7]
А как мне тогда этот код реализовать в Delphi?
← →
Nucer (2009-12-16 20:51) [9]
> А как мне тогда этот код реализовать в Delphi?
Через методы класса.
← →
S-C-L © (2009-12-16 20:53) [10]т.е:
//! Add-equals operator
procedure Add( v : Vector2);
procedure Sub( v : Vector2);
procedure Mul( v : Vector2);
procedure Div( v : Vector2);
Я правильно понял?
← →
Nucer (2009-12-16 20:57) [11]
> S-C-L © (16.12.09 20:53) [10]
Да. Но это будут аналоги +=, -=, /=, *=. Можно еще сделать методы, аналогичные обычным с двумя операндами.
← →
S-C-L © (2009-12-16 21:01) [12]Как заменить оператор |=?
upSkin |= ( iSkinPart == index );
← →
Омлет © (2009-12-16 21:23) [13]> upSkin |= ( iSkinPart == index );
upSkin := upSkin or (iSkinPart = index );
← →
Anatoly Podgoretsky © (2009-12-16 21:35) [14]> MBo (16.12.2009 20:27:04) [4]
Alt+32
← →
Anatoly Podgoretsky © (2009-12-16 22:25) [15]> Anatoly Podgoretsky (16.12.2009 21:35:14) [14]
И вариант пользовательский - Ctrl+C, Ctrl+V, Ctrl+V, ...
← →
Игорь Шевченко © (2009-12-16 23:15) [16]
> Ценю только дельные советы!
Ценю только деньги за ответы
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.02.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c