Кресты / Говнокод #6608 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
class CVal
{
private:
    int m_val;
public:
    __declspec(property(get=get_Val, put=put_Val)) int Val;
    int get_Val()
    {
        return m_val;
    }
    void put_Val(int val)
    {
        m_val = val;
    }
};

Говно в рамках стандарта C++.

Запостил: Говногость Говногость, (Updated )

Комментарии (40) RSS

    • Мне вас жаль. Хосни суйцов, быдло.

      Всё, не прибежит.
      Ответить
  • какого стандарта?
    __declspec приблуда майкрософта
    Ответить
  • У меня кучка погуще будет:
    template<typename dataT, typename ownerT,
    	typename const dataT& (ownerT::*setter)(const dataT&),
    	typename const dataT& (ownerT::*getter)() const>
    class Property
    {
    private:
    	ownerT * owner;
    	Property() : owner(nullptr)
    	{
    	}
    	Property(const Property& value) : owner(value.owner)
    	{
    	}
    public:
    	const Property& operator=(const Property& value)
    	{
    		if(&value!=this)
    		{
    			(owner->*setter)((value.owner->*getter)());
    		}
    		return *this;
    	}
    	Property(ownerT * const owner) : owner(owner)
    	{
    	}
    	operator dataT()
    	{
    		return (owner->*getter)();
    	}
    	const dataT& operator()() const
    	{
    		return (owner->*getter)();
    	}
    	const dataT& operator=(const dataT& value)
    	{
    		return (owner->*setter)(value);
    	}
    	template<class another_valueT>
    	const dataT& operator=(const another_valueT& value)
    	{
    		throw std::exception("wrong property lvalue");
    	}
    };
    Ответить
    • Тоже делал подобное, но совсем уж высер.
      дельфовое проперти в этом плане удобнее и читабельнее.
      Ответить
      • Этим шаблоном, в отличие от __declspec, можно спрятать в private геттер и сеттер. ИМХО читабельность не сильно ухудшилась.
        Ответить
    • А эти шаблоном можно передавать свойства по ссылке?
      Ответить
        • Чтобы при foo(prop) перед передачей в foo вызывался геттер prop во временную переменную, передавалась ссылка именно на неё, а при выходе вызывался сеттер из нового значения этой временной переменной.
          Ответить
          • Нельзя. Но можно передавать в foo ссылку на владельца свойства и вызывать свойство у него (у владельца, переданного по ссылке то есть).
            Ответить
          • А где такое можно вообще? В шарпах например нечто подобное надо уже через рефлексию мутить.
            Ответить
            • Как, в шарпе тоже нельзя? Вот говно. Такая простая вещь же.

              Выходит, что свойства - не более чем бесполезный сахар, никак не сокращающий кол-во кода, ведь какая нахрен разница, писать Color := red или SetColor(res). А чтобы передать 3 параметра по ссылке, я должен руками создать три временные переменные, почувствуй себя ассемблером, блин.
              Ответить
              • Ну а что там в дельфях на этот счет?
                Сокращения есть + некоторая единообразность, т.к. работаешь почти как с переменной.
                Ответить
                • В дельфях та же хрень (по крайней мере в семёрке) - бесполезный сахар. Ну разве что возможность в среде задавать параметры формочек.

                  > Cокращения есть + некоторая единообразность, т.к. работаешь почти как с переменной.

                  Эти сокращения, как бы сказать, на уровне константы, а не порядка. То есть мало что дают.
                  А "работа как с переменной" тут даже минус, поскольку можно нечаянно вызвать нечто, и не заметить этого. Я в обработчиках событий что-то писал такое, что в бесконечную рекурсию уходил и не понимал, почему.
                  Ответить
    • че за говно?

      template<typename dataT, typename ownerT,
      	typename const dataT& (ownerT::*setter)(const dataT&),
      	typename const dataT& (ownerT::*getter)() const>
      class Property
      {
      private:
      	ownerT * owner;
      	explicit Property(ownerT * owner_ = nullptr): owner(owner_)
      	{
              }
      	Property(const Property& value) : owner(value.owner)
      	{
      	}
      public:
      	Property& operator=(const Property& value)
      	{
      	(owner->*setter)(value);
      	return *this;
      	}
      	Property(ownerT * const owner_) : owner(owner_)
      	{
      	}
      	operator dataT &()
      	{
      		return (owner->*getter)();
      	}
      	operator const dataT &() const
      	{
      		return (owner->*getter)();
      	}
      	Property& operator=(const dataT& value)
      	{
      		(owner->*setter)(value);
      	return *this;
              }
      };
      Ответить
  • Очевидно, что такое не стандартизированное говно применять не стоит.
    Ответить
  • Набери на калькуляторе 0.7811505
    переверни и прочитай.
    Ответить
  • ФXGVESPFQIJVKNEAKBIVSTOIIDRQDWGKMFKLGJSTNRMEFDBXOQUSBHJFVOQQDPDXCZAYPHMEFRHGVVORKMZGXKUWDEKYCAXSTVYUKSNFHPQJSBZLAHRILCUUPTXMUCOLDMQTSPEBWOOTDRWIPJMYTWEECLZAWHBHGQODJUD
    Ответить
  • РUBTWIGRTTITCDVDOLVHFHJGIVXQHNGKQHWONSJSQTQJKAYGKRUTKFHPVMJXRETNLCSRAIYFKICQUBJSNXXTGTPPPPVNMEJIFMYQHQMUGCHGHMXRVOJDTLSNVZPSIWTRPNJZLGOMDBRSYZEEVTZSBUDNLSXUJGHOXCXTSNHCYVGGPWYVZAVRMUFXSSKXPTJKCELJJQNOVQRGEMZXNANKDEEKTXQZULNUSPQBKMBEJSQEPVDXHFFJDGGBHBCUVFODXQXYHOINNFYXCDQKFWWYFBWGIXJWRLIIZVAWPSJOYDMCJVXABNLPOWXWWWCFVD
    Ответить
  • е$A?K)TE:Q(L)E(D)S.B)C,K?T!L.A(P)WJ(Q"T)F"M"B$X$C O"X:S$C!Y!Q!Y G?V!D,B$X:C(NA$B)H)D,B(L O"B"C"LV,Z"H$R?Y"J.I"D!V(O Y,L)T:U,YB)H(T W,N?B(D,J(J?W)T"A:D.I)X)C!D?I?O J:F?J$C!E!V(T,E W?V:R?R"ZK N(M,C)J:U!D$G$S"S K"X(T:M.M(J!E"U(W H?J(B(U.D?X!S"N?E?T!E:C.R,R$C.E"I K.D I BD?V,S.A"T.E,O)D$T$O$S!C,H"P)T T$H.A$J CP(Q"C,W?P!O!C)Q"LFW?K!X W?W(KF"G:G W(S$G(V$E:B!O"KG"W V:J!A.U,Z.I!C.K(V,L?C"D(R$R M,C!X,E)R W:N.OH,W X.T.V"R$U.F)M!E"M)U!J A K P.W,S)L.Y?I?H$T.R)I(V$D,E)H,Y$I)QH)V(O)D!U:T!B,O(NX:C!J,D,B(U)S$L"C A"K(HF$L"L"G.W?E Q,R!H?H$M?C.O(GQ?Q,B(W?G)H$LC$T,D?R"Z:H.D.Y$X H$O P$Y.P!A F$V(G!Q)HH,CO)L$N.H S,R,K"I(M(C(D"S!R?W J(Y!O)O"Y.I$H,W(V!G)F"VАKBOGWKXLMJJKMMCTLZHYAXJATBJRADVKCJAJZXPTMBNPFOAVRNGJPBFNADUSPISNLVPWZSBIEBJOHCEPKALJ
    Ответить
  • з?R!CD,D.E.Z)I.Y$X"F,Z!P$P?X:Y!X.B H.V!W(N)G(DM.FU.N"E?F.D!Y V.YG:Z$Q,O,G.B)N?X.Y B.C M)O?Q$V(M$Q!A?U C?V,S.O.NO!V,E?K,LV:P,Q!S(M(B"A(F!P,O!Z"CU:U?B?C,W)R?K(F"M)E)V)JI"O!U)B(H!U.P.T X)EW$C:ZPL?H)A)G"M!Q.Y,YM?R T)V)P"B:T!Z,QV$C"C?T$N"L!RI,G)Y,D)BN)J!L:U$Z!L$B G,Y.C R)A)S.D,A"G(P?B?H)I!R?A!X(I:P O)R!O.G$G:H"Z Y PD Y$J(T.K)V?H$Z.N:A(F(DY(Y)V,SE!Z Q)Q(D,W?G,W!O(K$S.T.G?T?O$L:T!B"P!T?G)S?D!K.A)D.D,M!BFF B$A)Z,B?S(R"J"A:X"U!W,F(I,T$D.X?F?V"Z"Y"NH(I.X Z?U"A:F N)J(L$N?R:Q"L,T)U)B(PD:OX)V.Y?K?W.WO:N)W?O)B?V,U.L?Q)F$A"M)N(E"K.U?W,O,X$L"J,P.R!B"D(A$X(N M,O!B!U.A(D:S.HT$S YR:C.E.U:A H?G(T.V U?Y"MQ,S"DC,LE U(M)D)A$B$P!MU"X!K$W?C!JJ?C)X:I"A F,HI.L?E.V$G(N!B,G"F,ZG)F!XO:Y?H?T:F!S)Y:L?T.W,W?H.F(W:I$M.D?A)K.D.J!QV!R$S?N,LQ(C?HG.N!L:Y$O F,I?G,B.W$T!P,M,S?P$R?S.G$D.E:K)K(U.X)I Q)G)M$Y,Z:AB!AQ"Z:Y)S.O)H,UH$I,V.L E(D)BQ?S$L)P)B:W"X!I?AJ,L$Q:R!P?O$L?WO:E!I"P:A:J(N$S"D(D(G,OJ,P$D?X!X$P E(H!C(K"L,M!V:N$Q,Q?P$MБRLWYJUQLNTAGUEFYBNNDLUEBDUEZEGODSPHRQPZMPQVKYEMPCQKGLEEPYOBNFUMTEZNLCUIWNTJFIFHUJFQQUCWUUPXLYLWKQXZUOXNXZDUKVMKUHLUPLSXZHTHPFQKFMSNVLCZKEOGOHAFEQMBZHKTGMIEDGXHEEFOEHOASGLCPPFOIKIZUOUOLQYZNYPDTRBRTEJBWTPOEGVDRBIPVMZBVSMJJSIHLZLBPGRDPJSPXDMKBFAIULWEJKKFHSXPBGWTCS
    Ответить
  • ю(E)O)IM?DR:S?O!V?B)M)Q C P?K.Z,K:SC.P.N$V D A:T(F(MU:JT?I)D$O!Z$T(Z!P:R)V.K(V!A)R?X!J:E$G Y:T?S!K,G"B(B!I?T"Q.U!R(C Y B?D?Y(M(D D!I"NO(J J,Y RL(DB,S)B"J$V(L)R)P.G"B.S T!G E!J$D?U:ZC?D:Q$LKN.E"L)T.L.M.U"ZR.T"X$E.A!W$X)O.J X)T,FV,L?R,N?B?D"F$L,S?F.A E?F:CH.NM)S,G,H.C"L?K,O R:O"HB)LE:B!M.G!R$J W R(O O:P?G(E G.Q X,O(B?J P:S,V?T!Q:T"Y!O?Y,F!W?P.U"K"I?B"G(L$N.S:S"V:T)Y"CA"G?J?LE"R,O?F,P$H$RI)ZЦNAQYRJKVRLDBWJKRIJCWRAAJTYMITCSNADDSYQQPCXTYJEIWFLLOJRJJTFZHHGOGTYFESYJWTMXVIUSHFNRMAYLQOVDMCGICDIZHMJTBOWJVQKTEJNKWINUUHYIZZFSUEXCQRYHE
    Ответить
  • г,P(K(T"R$N,J)K$O"S,Y(O.RE)Z.X)Y"Z"B?S(B.V?G:G C$E,N M)D$C.M?K!M.A.K,A,Z"B$U"P$A$M,Q:W,B:N)I:R.VT:M$O.L"D.O,J J U!M(D)E!L"O F.N(Z(B:M$S!P?D C)U.W,P Y?Z(Q!H)MSПDSECRSYHZMGNFOZMJZGMGHBMUGMPPXTEYLBRDGQAGRYYJYWYRSPAJVNOPSKZQQUOOLXXOWIEFWMUVJNBPIAPMWVVLXILZXYRMTLBTKVEZPBYHODNNVKGBXQBGYIHFFBOGUEFNNZZNMBQQFQUZSKNKOHDKHIIRPGIVYPAENKJJBJCJVMPIRXCCJTQBILVVYWHRPEJEWILEIRDYLBQXZLTLXUJVIQHNGFEOWNLSPJPHYFBUGDDHDPLRVWPYDBMPOCQVBCXQSMWNUNTMJKBVAGQMLV
    Ответить
  • у,SN,OK(K UI.Y$YZ(W)W,X(N S$V"I"I)B(R:TN$X?U"J.H:X)I,R(V"M!V)LQ$B!U,K$J?S"EJ G,C(T"F!W!U)N$S.Q"I:FC:Y!W HQ$V.J"D!K,L R M"EW!Z?O$L:H,W.N.F D$G?B"ZY$ZЬNMUQJSDCOZUQAQUWRVDKKJJUBLBVBOODXCKEBVUPKNETJQKVPLABKTDJICEIOPORJZOTDGAOMCCMNOEQCAIHTLHXGOAIEFMTKRROLDVOGAWPAJQ
    Ответить
  • т.K.J?P,Y"S"C J.X!J?E$DW$M?T!N(KN$H,F!V$Q,J(W)S$U!C?Z(V)A$C$ZX$FQ.Y(B?T Y!Y$G"D Z(V KШCDBIVKNBFPEEGPZCUYOLMUGLKMAQGMBVDOJGQFPKZVTFICPOIK
    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8