c++.stlsoft - Problem with MFCSTL array_veneer
- Gabor.Fischer systecs.com (Gabor Fischer) (29/29) Jul 19 2005 Hi!
- Matthew (11/47) Jul 19 2005 First, let me say that MFCSTL has had very little input over the
- Gabor.Fischer systecs.com (Gabor Fischer) (25/28) Jul 20 2005 Well, what Im'm trying to achieve is basically what I have posted: Apply...
- Matthew (7/36) Jul 21 2005 Got it
- Gabor.Fischer systecs.com (Gabor Fischer) (102/102) Jul 20 2005 Hi!
- Matthew (8/37) Dec 20 2005 Check out the CArray_cadaptor and CArray_iadaptor adaptor classes releas...
Hi! I have just begun to test the array_veneer class in MFCSTL. I use STLSoft 1.8.3 with Visual C++ 7.0. I encountered problems when writing simple test programs. First I wanted to apply std::sort to array_veneer: struct MyTrait { typedef int value_type; typedef int arg_type; }; . . . mfcstl::array_veneer<CArray<int>, MyTrait> av; std::sort(av.begin(), av.end()); This fails to compile (six errors). Ok, next test: Try to use std::back_inserter with array_veneer: mfcstl::array_veneer<CArray<int>, MyTrait> av1; mfcstl::array_veneer<CArray<int>, MyTrait> av2; std::copy(av1.begin(), av1.end(), std::back_inserter(av2)); Fails to compile too (the compiler is complaining that reference is not a member of array_veneer) BTW, by simply creating an array_veneer like above (and nothing else), I get two warnings saying that the copy constructor and the copy assignment operator could not be created. Is that normal? And, while I am at it: Why does the array_adaptor class only have a const_iterator, not an iterator, and no push_back? So Long... Gabor
Jul 19 2005
First, let me say that MFCSTL has had very little input over the last couple of years, as is probably evident by the code. If you can post a sample file showing what you want to achieve, I'll be able to comment on whether it's possible and, if it is, I would think a fix will be forthcoming. ;-) Cheers Matthew P.S. I'm thinking of renaming several 'veneer' classes, so changes to meet your requirements might tie in quite nicely. "Gabor Fischer" <Gabor.Fischer systecs.com> wrote in message news:9aBupAFKQNB systecs.com...Hi! I have just begun to test the array_veneer class in MFCSTL. I use STLSoft 1.8.3 with Visual C++ 7.0. I encountered problems when writing simple test programs. First I wanted to apply std::sort to array_veneer: struct MyTrait { typedef int value_type; typedef int arg_type; }; . . . mfcstl::array_veneer<CArray<int>, MyTrait> av; std::sort(av.begin(), av.end()); This fails to compile (six errors). Ok, next test: Try to use std::back_inserter with array_veneer: mfcstl::array_veneer<CArray<int>, MyTrait> av1; mfcstl::array_veneer<CArray<int>, MyTrait> av2; std::copy(av1.begin(), av1.end(), std::back_inserter(av2)); Fails to compile too (the compiler is complaining that reference is not a member of array_veneer) BTW, by simply creating an array_veneer like above (and nothing else), I get two warnings saying that the copy constructor and the copy assignment operator could not be created. Is that normal? And, while I am at it: Why does the array_adaptor class only have a const_iterator, not an iterator, and no push_back? So Long... Gabor
Jul 19 2005
Hi Matthew!If you can post a sample file showing what you want to achieve, I'll be able to comment on whether it's possible and, if it is, I would think a fix will be forthcoming. ;-)Well, what Im'm trying to achieve is basically what I have posted: Apply STL algorithms to MFC CArray, with array_veneer and array_adaptor. ;-) We have a third party library here that takes and returns CArrays (and its specialisations). Right now, I am copying the CArrays to vectors and back, whenever I want to use STL algorithms, I was hoping that with MFCSTL I could skip that and could write code like CObArray Array = SomeLibraryFunc( ... ); mfcstl::array_adaptor<CObArray> Adapt; std::sort(Adapt.begin(), Adapt.end(), MyPred); Or like mfcstl::array_veneer<CObArray> Ven; std::copy(SomeSource.begin(), SomeSource.end(), std::back_inserter(Ven)); SomeOtherLibraryFunc(Ven); // Takes CObArray as argument The first one fails because array_adaptor only supports const_iterator, not iterator. But std::sort also fails with array_veneer, although it should work, since array_veneer supports iterator, and it provides random access iterators. And std::back_inserter fails on both array_adaptor and array_veneer because array_adaptor does not have push_back and array_veneer does not have a reference typedef (probably const_reference would also be needed). For your convenience, I will post a small test project which illustrates the problems. So Long... Gabor
Jul 20 2005
Got it FYI: I'm writing my next book, Extended STL, at the moment, and in a few days I'll be working on the material about adapting non-STL collections, so this'll be ideal material. As such, I think I may have some good news for you next week. Cheers Matthew "Gabor Fischer" <Gabor.Fischer systecs.com> wrote in message news:9aFuyXOpQNB systecs.com...Hi Matthew!If you can post a sample file showing what you want to achieve, I'll be able to comment on whether it's possible and, if it is, I would think a fix will be forthcoming. ;-)Well, what Im'm trying to achieve is basically what I have posted: Apply STL algorithms to MFC CArray, with array_veneer and array_adaptor. ;-) We have a third party library here that takes and returns CArrays (and its specialisations). Right now, I am copying the CArrays to vectors and back, whenever I want to use STL algorithms, I was hoping that with MFCSTL I could skip that and could write code like CObArray Array = SomeLibraryFunc( ... ); mfcstl::array_adaptor<CObArray> Adapt; std::sort(Adapt.begin(), Adapt.end(), MyPred); Or like mfcstl::array_veneer<CObArray> Ven; std::copy(SomeSource.begin(), SomeSource.end(), std::back_inserter(Ven)); SomeOtherLibraryFunc(Ven); // Takes CObArray as argument The first one fails because array_adaptor only supports const_iterator, not iterator. But std::sort also fails with array_veneer, although it should work, since array_veneer supports iterator, and it provides random access iterators. And std::back_inserter fails on both array_adaptor and array_veneer because array_adaptor does not have push_back and array_veneer does not have a reference typedef (probably const_reference would also be needed). For your convenience, I will post a small test project which illustrates the problems. So Long... Gabor
Jul 21 2005
I'm going to release STLSoft 1.8.4 in the next day or so, and this will _not_ be in there, but I will look at it as soon as that release is done. "Matthew" <admin.hat stlsoft.dot.org> wrote in message news:dbnoar$1sa3$1 digitaldaemon.com...Got it FYI: I'm writing my next book, Extended STL, at the moment, and in a few days I'll be working on the material about adapting non-STL collections, so this'll be ideal material. As such, I think I may have some good news for you next week. Cheers Matthew "Gabor Fischer" <Gabor.Fischer systecs.com> wrote in message news:9aFuyXOpQNB systecs.com...Hi Matthew!If you can post a sample file showing what you want to achieve, I'll be able to comment on whether it's possible and, if it is, I would think a fix will be forthcoming. ;-)Well, what Im'm trying to achieve is basically what I have posted: Apply STL algorithms to MFC CArray, with array_veneer and array_adaptor. ;-) We have a third party library here that takes and returns CArrays (and its specialisations). Right now, I am copying the CArrays to vectors and back, whenever I want to use STL algorithms, I was hoping that with MFCSTL I could skip that and could write code like CObArray Array = SomeLibraryFunc( ... ); mfcstl::array_adaptor<CObArray> Adapt; std::sort(Adapt.begin(), Adapt.end(), MyPred); Or like mfcstl::array_veneer<CObArray> Ven; std::copy(SomeSource.begin(), SomeSource.end(), std::back_inserter(Ven)); SomeOtherLibraryFunc(Ven); // Takes CObArray as argument The first one fails because array_adaptor only supports const_iterator, not iterator. But std::sort also fails with array_veneer, although it should work, since array_veneer supports iterator, and it provides random access iterators. And std::back_inserter fails on both array_adaptor and array_veneer because array_adaptor does not have push_back and array_veneer does not have a reference typedef (probably const_reference would also be needed). For your convenience, I will post a small test project which illustrates the problems. So Long... Gabor
Jul 25 2005
Gabor I'm working on this right now. I did a fair amount yesterday, and expect to having something testable in the next 48hrs Cheers Matthew "Matthew" <admin.hat stlsoft.dot.org> wrote in message news:dbnoar$1sa3$1 digitaldaemon.com...Got it FYI: I'm writing my next book, Extended STL, at the moment, and in a few days I'll be working on the material about adapting non-STL collections, so this'll be ideal material. As such, I think I may have some good news for you next week. Cheers Matthew "Gabor Fischer" <Gabor.Fischer systecs.com> wrote in message news:9aFuyXOpQNB systecs.com...Hi Matthew!If you can post a sample file showing what you want to achieve, I'll be able to comment on whether it's possible and, if it is, I would think a fix will be forthcoming. ;-)Well, what Im'm trying to achieve is basically what I have posted: Apply STL algorithms to MFC CArray, with array_veneer and array_adaptor. ;-) We have a third party library here that takes and returns CArrays (and its specialisations). Right now, I am copying the CArrays to vectors and back, whenever I want to use STL algorithms, I was hoping that with MFCSTL I could skip that and could write code like CObArray Array = SomeLibraryFunc( ... ); mfcstl::array_adaptor<CObArray> Adapt; std::sort(Adapt.begin(), Adapt.end(), MyPred); Or like mfcstl::array_veneer<CObArray> Ven; std::copy(SomeSource.begin(), SomeSource.end(), std::back_inserter(Ven)); SomeOtherLibraryFunc(Ven); // Takes CObArray as argument The first one fails because array_adaptor only supports const_iterator, not iterator. But std::sort also fails with array_veneer, although it should work, since array_veneer supports iterator, and it provides random access iterators. And std::back_inserter fails on both array_adaptor and array_veneer because array_adaptor does not have push_back and array_veneer does not have a reference typedef (probably const_reference would also be needed). For your convenience, I will post a small test project which illustrates the problems. So Long... Gabor
Aug 03 2005
Hi! Here comes my test project: begin 644 MfcStlTest.ZIP MG<9&-X4Q!?7>Y]W[?-X7[Y2+."T8 IUK%B6OYQM[.#A],RZ2^%&G3YCK`Y`P M3""<77]>WM"2%EP "'R!TA3>7:_(C(+Q9#AH!)IPF6N%T?:J:8S2M51<;UI6 M4`>2I'V"RY+0NKB`KX)K6'P)C$\"SLDT>25EQNKX_ WJA61%BK>18"DZ=\OY MW#T M<6N(&AD#Y6!AFF,5! Y7D7.Q/F8^[D2H7>E?2-4%WV^VH7M[+E5/X$2J$*-X M,^X1E.V[D><H_A%RD:/2)>G1B0IOAA%&/C2%`97R*.;HWO29!+.55&QJ3%<0 M[48-;EJ=9T6^"0VS\][MA4;]T,=^Z$,_Y+FM_.KQM)?"9(*L2L$OQ[1VJLOJ MU]?Y/X?F7V;`:RG(]KV26\')R^NN32`SWE>;1EF\)H?751:K/)(LA;I0XNT` MJHZJWU!+`P04``(`"``C ?0R"%<1O]T```!``0``" ```'-T9&%F>"YC<'!= M.]ZQ;2&+,^.UL3'"%CX*>B]X54R0GL$1`I>TS%X,.Y/<RSM;7QQF0.(3L4.I MJ[8%V(^V%S] EB;:"2 +.$SP'9(-YTB>,`G"#HVBJ^)Q.YR^`%FFNY?ETC_% M_258RY%2AN[U[;/9P6)0V`$K3>:5,K(VZ.9G`";-H,+9!++V;NKJ%U!+`P04 MR,]+3N7EXN52SLQ+SBE-2550*DHMSB\M2D[5RU#BY0 M7\":'*2:B%'IGH)K)FU:R8)&2EGV;?L8/31*BRQL3\/,]\W/'X;G,V4"DY)0 M3&B:$7ZY!'X8HD+WXVDZ*8M:/<W= -+=#KV` ;&S()$V_3!+0$H/L%\?FLF= MCY^H4#VW0PV3W8_ M=D9VH_R`T6WJ>T0&9D#L^`;O%E;5Q6GE`E%2\KK!&1,9;=D3P2LP5Z0B"68T M/PA^*!Y9SK<JK <7E#S7SN&LJ5(BVB1OB.L4W[)25A0)Q;^2]Q!%_WFTKEC^ MY\7.NZ6Y/ 1OTA(%1FJUS1]02P,$%``"`` `-('T,H]M:=8=` ``' 0``` ` M``!S=&1A9G N:*53P6[:0!`]!XE_&*G7`%+;4U0A(8>T*&`0-DENUF*/[2GV MUBEEL$9=\X&O0:W1-BBDH=86,RS*XW?*4,-H7?%1)W++T)V688=6[+Y+Z':Z MG7=;J[)2 =$Q-G:"*6F$QXG_X7TT'8_\:.3?1C.Y7%U)C0`+%KAGM#L40$8( MD0H$Q_^1=&)V5>\+*F=JBG,&)+TF1T&PJ>T&/HE<9/KY\-S'<:YLZ_O)(1J% MT\ +PN7$_QR-GQ;3B3<)(V_NBVOEA?-EX!A)`>D5O(`MZ:QW;W3%MMZPL<*S MDM*`^VU!!^*F/TJ%3`H/GB"&RY'K\+7BN??_VY4,2MNBIR:;(1E>>':DQ0FG M3\K.[KS>/5K=DP=-? W0QI1;HU'S6S$%`??\!X2QD"9&6^OLMXR$8RXDI^G2 M!:\$UE;\P <);^96%46&)3I=`L8:+19B2A \&RV3*?$:&<:BKFAMX>.KNM'H M[BGRY^[P9GX4K!:+^3*\H!"7NB'P3PQ.8K]E<H$HZ[4M6GT;[9T0?Z-RGDI& M1 95.71NR0GGM_,;>'"/3I4\?^"VCJ1%5:=PJ*LC'PIRZ]D^?;N6D]S"PIK, MJK($M*FQ;M^ZG1]02P,$%``"`` `(X'T,H<ZV5N&`0``: 4```T```!-9F-3 M=&Q497-T+G)CO5-+;X)`$+Z3\!^F>*FQD8II>D;9$E($`XO1QH10&)24+F:! MED7-8V3E&\]655>65%666AF+\SI!4#AN^]VE(DNBD6":,01][-/`L-S0([KA MM%;-A!SGM&API'"S%2VYU9^FXI+O!MZ0A(9MMV&]AOTFU3TS-$C0EB5;=\Q` M-PD\WD%/[%GQ:/$>05PD&*ZB!=[VM`>MW3RQ>>0`B.5,W&=B7,N+/>6W9[+4 M(KP1)1B=*G<M[5XPBY?(TB(7B:VB5\QS_!;1IY[EF%0?V$<L+,,/]?$XI!9M MQL^2\!T()Y=8TBJ;<-B!?RX[N"QCV<X(+Z9+;0TM9HO;=U]1G**'J3?Z/.WO MB0_(5=]>>V'D1TGH(2]T`T1(C)$7$X(P#G#D$^VZPQ_[QKJW[&F9IXJ] E3V MX/#DK/*EYC7B6C\BV',Q\F.,D>O[MRB,$HS&DU$8D2"Y(V'X8YM&PHNV VD\ M*N>[4;_?*1\-+^:$-67%?F$74]IU=OJTVM6L?:=CTK^[3CX5<$EGE%'UM;6N M^F<=3E`4C_P\S)]B&K]02P,$%``"`` `C('T,KYK-]\-!```APX``!$```!- MQZ[E))<%"HH:VTPI4J"HU-['?^]0HA(KM>/ZL.T>]J"$',X,Y_'Q(]U^OXKY M.5'R#JA^^:)F1[-U`AVG4#GR7K]V<.FF=/[NI-$P BL2H])H3 /-9Y!JY]'^ M\GK =YR_+AI>L_'+6>/XW&\TCL_.S]\<=[U>X_A=_[3K-2]Z;YO=[C_&['=8 M?Y8JZI X3UO&B8,QUMH33O1<JC UL\>IF=CM<P.GGFO7*^IM3XHY6V2*:`S; M_LSWZ3 -*[V((F8DA`\$Y5GT$"6#M./\]',P&P;C_NS5'ZQ8MF83!8F2%-)4 M*A_F3.1.T.)V<'7:<C_ZO>[UI?O1&U\%XV'/&HU0+29\BLDSCAV<3:_+I2Y) M&9UF`D,$;PGT$[HZM6M6/&2A(J9XI1SK V'0(M/H-R`1J,?56Z($(GH(]\`[ MSIF5^J`QN[=G7:8G4FD2,L[T&E$4<HAQS_[%,. ]Z&*3!L* )"]:/Q\87_7= ME<]2+>.NR2\O_6[-(1.?JOW)8=3'7$S=QSFB7M4?S\P)K,KJ&UMLEX(8A";\ MDHD<M+MS'0W\X9YR3&2J\[+U[C&G?<H*#M$UY?H6U2FD,E,4*H=GM_HMA`&H M>T81AG*UMK67WV#F0\+E.JY&U*Y7J.!Y$IH"!^S=LS1D=9XEHHK.#Z MP1%)_4Q0(^^M$B+L%56:Q4SW$;DPD<RDDU9 _>\PV=56) NT0FZ98$;XKQ+% M4[(JD^L) A13)I>SDH'E4_,?Q6FG_SU.:Q[":5OXR8(,IC`'A0\< X)J-[SQ MR+^8]26/\C:T_B>V[T5L3T3%(\S`Q+Z]<(CG>X/O/F3`>80H8""*-A4J'8<F MB4M=NEJY$<Q=&7&7X;=,[MR0:)>D<<E-QKT]HX"//W8/$Z*7FZ_2$_15:M>- M^A[+5$=DOMJP*E2_YNQM3T=KL5G(/:RYBQT>`&JC_OH:V1M8]3KYKJ%M5#H? M8E-W8*!PNA4$2VQXXBX1!,O890(Q(. !?5\>TO7R,!UF9;&RQ69/UE-S,YG] MCN\EER'AQ;C^.&G7M_Q\1/D74$L!`A0`%``"`` `<8/T,N)0Y:PA` ``LP4` M``X```````````` `````````$UF8U-T;%1E<W0N8W!P4$L!`A0`%``"`` ` M(X'T, A7$;_=````0`$```H```````````` ````30(``'-T9&%F>"YC<'!0 M``````` ````I0,``%)E<V]U<F-E+FA02P$"%``4``(`"``T ?0RCVUIUAT" M````````````(````$`*``!-9F-3=&Q497-T+G9C<')O:E!+!08`````"``( ` end 4196 So Long... Gabor
Jul 20 2005
Check out the CArray_cadaptor and CArray_iadaptor adaptor classes released in the 1.9.1 beta. Sorry for the delay. ;-) Cheers Matthew "Gabor Fischer" <Gabor.Fischer systecs.com> wrote in message news:9aBupAFKQNB systecs.com...Hi! I have just begun to test the array_veneer class in MFCSTL. I use STLSoft 1.8.3 with Visual C++ 7.0. I encountered problems when writing simple test programs. First I wanted to apply std::sort to array_veneer: struct MyTrait { typedef int value_type; typedef int arg_type; }; . . . mfcstl::array_veneer<CArray<int>, MyTrait> av; std::sort(av.begin(), av.end()); This fails to compile (six errors). Ok, next test: Try to use std::back_inserter with array_veneer: mfcstl::array_veneer<CArray<int>, MyTrait> av1; mfcstl::array_veneer<CArray<int>, MyTrait> av2; std::copy(av1.begin(), av1.end(), std::back_inserter(av2)); Fails to compile too (the compiler is complaining that reference is not a member of array_veneer) BTW, by simply creating an array_veneer like above (and nothing else), I get two warnings saying that the copy constructor and the copy assignment operator could not be created. Is that normal? And, while I am at it: Why does the array_adaptor class only have a const_iterator, not an iterator, and no push_back? So Long... Gabor
Dec 20 2005