[ Srki_82 @ 14.08.2004. 02:40 ] @
Trazio sam na netu kako se prave property u C++, ali sve to izgleda komplikovano (pravljenje posebnih klasa za property, pa se pojavljuje i template...), postoji li neki laksi nacin da se to uradi?

P.S.
Ne bih da koristim __gc i __property
[ Srki_82 @ 14.08.2004. 02:57 ] @
Nasao sam odgovor :)

_declspec(property(get=GetterFunkcija,put=SetterFunkcija))
[ Dragi Tata @ 14.08.2004. 03:21 ] @
To nije C++. A šta će ti uostalom property?
[ Srki_82 @ 14.08.2004. 12:42 ] @
Pa ja sam ovako deklarisao klasu:

Code:

class CMMObject
{
protected:
    std::string _name;
    std::string _type;
public:
    std::string GetName()
    {
        return _name;
    };
    std::string GetType()
    {
        return _type;
    };

    CMMObject( std::string _Name, std::string _Type )
    {
        _name = _Name;
        _type = _Type;
    }

    _declspec(property(get=GetName))std::string Name;
    _declspec(property(get=GetType))std::string Type;
};


i sva radi kako treba u C++. Radio sam u Delph-iu pa sam uvek koristio property za pristup elementima koji mogu samo da se citaju. Mogao sam ovde i samo da napravim funkciju Name koja vraca vrednost _name, zar ne?
[ filmil @ 14.08.2004. 12:53 ] @
To nije standardan C++.


f
[ Srki_82 @ 14.08.2004. 12:58 ] @
Koristim MS Visual Studio .Net... u kojim kompajlerima ce to tako da radi?
[ filmil @ 14.08.2004. 13:07 ] @
Verovatno ni u jednom drugom.
[ Dragi Tata @ 14.08.2004. 17:08 ] @
A vrlo verovatno neće ni u nekoj od slrdećih verzija MSVC-a.

Ako toliko voliš property-je, koristi neki jezik koji ih ima (C#, Delphi) a izbegavaj te rogobatne ekstenzije C++a.
[ 4063 @ 15.08.2004. 00:34 ] @
Ako je stvarno potrebno da je kod prenosiv mozes da napravis template klasu koja imitira property. Ja sam sa nekoliko frendova radio na tom da se porta Borlandov VCL na standardni C++. Uglavnom smo uspjeli sve specificne gluposti Borlanda da prebacimo da bude na standardnom C++ ali smo na kraju odustali jer je VCL stvarno prevelik. Lako ti je implementirati template koji imitira property. U sustini napravis template koji ima pointer na metode koji predstavljaju "read" i "write" propertye te predefinises operator "=" koji poziva "read" ili "write", zavisno od toga sta zelis. Mi smo prosirili da moze podrzavati sve specificne Borlandove konstrukcije. Ne znam dali cemo ista od toga postavoto na net, jer nismo zavrsili niti 10% posla i stali.