"Triplesticks" <
Triplesticks@discussions.microsoft.com>wrote in message
Quote
Your latest version answered all the remaining questions. But it still
doesn't compile cleanly (the typedef definition for SquareGrid isn't quite
right - sorry I missed it in the earlier message). I took your code,
created
and compiled it standalone (or at least tried). However, I get 2 compile
errors that go away when I comment out the typedef for SquareGrid. The
error
message is a little confusing, but here it is:
error C2582: 'operator=' function is unavailable in 'CList<TYPE,ARG_TYPE>
with [TYPE=Square, ARG_TYPE=Square&].
error C2582: 'operator=' function is unavailable in 'CList<TYPE,ARG_TYPE>
with [TYPE=Square, ARG_TYPE=Square&].
Maybe you can reproduce it yourself. The other odd thing is that the
compile error comes from afxtempl.h, not your standalone code. Sorry to
keep
after you on this one, but I think this is the last problem to get
through.
If you can just get my past this one, I think I'm home free.
Thanks for all the help.
I was afraid that you would get these as well...The reason is because the
CList does not provide copy/assignment/comparison operators for the types
being stored, that is unless they are basic data types (int, long, double,
etc...) What you need to do is create copy/assignment constructors/operator
overrides for your Square class and your SquareList class. The Square class
is pretty stright forward for this. The SquareList class is not because you
need to change the definition a little.
Attached is the source file I used for testing. You can cut & paste the
relevant code into your test project. You may also want to create an actual
class for SquareGrid similar to the one I created for SquareList.
--
============
Frank Hickman
Microsoft MVP
NobleSoft, Inc.
============
Replace the _nosp@m_ with @ to reply.
Quote
"Frank Hickman [MVP]" wrote:
>"Triplesticks" <Triplesticks@discussions.microsoft.com>wrote in message
>news:D9AEF8AC-74C2-4014-835F-40E044563FE6@microsoft.com...
>>Well, the good news is that your solution fixed the compiler error and
>>I
>>can
>>actually AddTail to both CLists (SquareList and SquareGrid) to populate
>>them.
>>However, the bad news is that I can only retrieve info (GetAt or
>>FindIndex)
>>from SquareList (cast as Square), because it actually points to an
>>object
>>(Square) not a typdef. Casting the results of accessing SquareGrid as
>>a
>>CList or as a SquareList didnt' help, because both are typedefs. I
>>think
>>we're close, but I just need to somehow get at the SquareGrid CList
>>first,
>>before I can get the final answer from SquareList CList.
>>
>>What do you think?
>>
>
>
>How are you actually using them? Remember that using typedef does not
>actually create an object so the two lines I suggested would still need
>to
>be used in a declaration statement.
>
>typedef CList<Square, Square&>SquareList;
>typedef CList<SquareList, SquareList&>SquareGrid;
>
>SquareGrid m_sq_grid;
>Square sq(0,0,10,10);
>SquareList sq_lst;
>sq_lst.AddTail( sq );
>m_sq_grid.AddTail( sq_lst );
>
>// This should work as is, no casting should be needed...
>POSITION pos= m_sq_grid.GetHeadPosition();
>SquareList& sq_lst_ref= m_sq_grid.GetNext( pos );
>POSITION posLst= sq_lst_ref.GetHeadPosition();
>Square& sq_ref= sq_lst_ref.GetNext( pos );
>
>--
>============
>Frank Hickman
>Microsoft MVP
>NobleSoft, Inc.
>============
>Replace the _nosp@m_ with @ to reply.
>
>
>>"Frank Hickman [MVP]" wrote:
>>
>>>"Triplesticks" <Triplesticks@discussions.microsoft.com>wrote in
>>>message
>>>news:9F33D3FE-5235-40E6-865E-D27DEAF82C55@microsoft.com...
>>>>I'm constructing a grid of objects (squares as in a crossword
>>>>puzzle).
>>>>What
>>>>I would like to do is have a CList within a CList. Something like:
>>>>
>>>>CList<Square, Square&>SquareList;
>>>>CList<SquareList, SquareList&>SquareGrid;
>>>>
>>>>However, I get a syntax error on the second definition (syntax
>>>>error:
>>>>'>').
>>>>I guess I could break it down into two separate CList and correlate
>>>>the
>>>>two,
>>>>but I was hoping someone would know how define a nested CList.
>>>>
>>>>Thanks in advance,
>>>
>>>This may not be the problem but have you tried using typedef?
>>>
>>>typedef CList<Square, Square&>SquareList;
>>>typedef CList<SquareList, SquareList&>SquareGrid;
>>>
>>>What you have is declaring a variable of type CList<Square, Square&>,
>>>not
>>>an
>>>assignable datatype. So the typedef should clear that up.
>>>
>>>--
>>>============
>>>Frank Hickman
>>>Microsoft MVP
>>>NobleSoft, Inc.
>>>============
>>>Replace the _nosp@m_ with @ to reply.
>>>
>>>
>>>
>
>
>
begin 666 Square.cpp
M+R\@4W%U87)E+F-P<" Z($1E9FEN97,@=&AE(&5N=')Y('!O:6YT(&9O<B!T
M:&4@8V]N<V]L92!A<'!L:6-A=&EO;BX-"B\O#0H-"B-I;F-L=61E(")S=&1A
M9G@N:"(-"B-I;F-L=61E(")#;VYS;VQE+F@B#0H-"B-I;F-L=61E(")T;6%P
M<RYH(@T*#0HC:69D968@7T1%0E5'#0HC9&5F:6YE(&YE=R!$14)51U].15<-
M"B-U;F1E9B!42$E37T9)3$4-"G-T871I8R!C:&%R(%1(25-?1DE,15M=(#T@
M7U]&24Q%7U\[#0HC96YD:68-"@T*+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\-"B\O(%1H92!O;F4@86YD(&]N;'D@87!P;&EC871I;VX@;V)J
M96-T#0H-"D-7:6Y!<' @=&AE07!P.PT*#0HO+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+PT*#0IU<VEN9R!N86UE<W!A8V4@<W1D.PT*#0HO+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+PT*#0IC;&%S<R!3<75A<F4-
M"GL-"G!U8FQI8SH-"@DO+R!#;VYS=')U8W1O<B]D97-T<G5C=&]R#0H)4W%U
M87)E*"D[#0H)4W%U87)E*"!I;G0@;E9A;"P@0U-T<FEN9R!S=')686P](%]4
M*"(B*2 I.PT*"79I<G1U86P@?E-Q=6%
R92@I.PT*"2\O($-O<'D@8V]N<W1R
M=6-T;W(-"@E3<75A<F4H(%-Q=6%R928@<W%?<F5F("D[#0H)+R\@07-S:6=N
M;65N= T*"5-Q=6%R928@;W!E<F%T;W(]*"!3<75A<F4F('-Q7W)E9B I.PT*
M"2\O($-O;7!A<FES;VX-"@E"3T],(&]P97)A=&]R/3TH(&-O;G-T(%-Q=6%R
M928@<W%?<F5F("D@8V]N<W0[#0H)0D]/3"!O<&5R871O<B$]*"!C;VYS="!3
M<75A<F4F('-Q7W)E9B I"0E[(')E='5R;B A*"IT:&ES/3US<5]R968I.R!]
M#0H-"G!U8FQI8SH-"@EI;G0@;5]N5F%L=64[#0H)0U-T<FEN9R!M7W-T<E9A
M;'5E.PT*?3L-"@T*4W%U87)E.CI3<75A<F4H*0T*"3H@;5]N5F%L=64H(# @
M*2P@;5]S=')686QU92@@7U0H(B(I("D-"GL-"GT-"@T*4W%U87)E.CI3<75A
M<F4H(&EN="!N5F%L+"!#4W1R:6YG('-T<E9A;" O*CT@7U0H(B(I*B\@*0T*
M"3H@;5]N5F%L=64H(&Y686P@*2P@;5]S=')686QU92@@<W1R5F%L("D-"GL-
M"GT-"@T*4W%U87)E.CI^4W%U87)E*"D-"GL-"GT-"@T*4W%U87)E.CI3<75A
M<F4H(%-Q=6%R928@<W%?<F5F("D-"GL-"@ET:&ES+3YM7VY686QU93T@<W%?
M<F5F+FU?;E9A;'5E.PT*"71H:7,M/FU?<W1R5F%L=64]('-Q7W)E9BYM7W-T
M<E9A;'5E.PT*?0T*#0I3<75A<F4F(%-Q=6%R93HZ;W!E<F%T;W(]*"!3<75A
M<F4F('-Q7W)E9B I#0I[#0H)=&AI<RT^;5]N5F%L=64]('-Q7W)E9BYM7VY6
M86QU93L-"@ET:&ES+3YM7W-T<E9A;'5E/2!S<5]R968N;5]S=')686QU93L-
M"@ER971U<FX@*G1H:7,[#0I]#0H-"D)/3TP@4W%U87)E.CIO<&5R871O<CT]
M*"!C;VYS="!3<75A<F4F('-Q7W)E9B I(&-O;G-T#0I[#0H):68@*"!T:&ES
M+3YM7VY686QU92 ]/2!S<5]R968N;5]N5F%L=64@)B8-"@D)=&AI<RT^;5]S
M=')686QU92 ]/2!S<5]R968N;5]S=')686QU92 I#0H)>PT*"0ER971U<FX@
M5%)513L-"@E]#0H)<F5T=7)N($9!3%-%.PT*?0T*#0H-"F-L87-S(%-Q=6%R
M94QI<W0@.B!P=6)L:6,@0TQI<W0\(%-Q=6%R92P@4W%U87)E)B ^#0I[#0IP
M=6)L:6,Z#0H)+R\@0V]N<W1R=6-T;W(O9&5S=')U8W1O<@T*"5-Q=6%R94QI
M<W0H(&EN="!N0FQO8VM3:7IE/2 Q," I.PT*"79I<G1U86P@?E-Q=6%R94QI
M<W0H*3L-"@DO+R!#;W!Y(&-O;G-T<G5C=&]R#0H)4W%U87)E3&ES="@@4W%U
M87)E3&ES="8@<W%L<W1?<F5F("D[#0H)+R\@07-S:6=N;65N= T*"5-Q=6%R
M94QI<W0F(&]P97)A=&]R/2@@4W%U87)E3&ES="8@<W%L<W1?<F5F("D[#0H)
M+R\@0V]M<&%R:7-O;@T*"4)/3TP@;W!E<F%T;W(]/2@@8V]N<W0@4W%U87)E
M3&ES="8@<W%L<W1?<F5F("D[#0H)0D]/3"!O<&5R871O<B$]*"!C;VYS="!3
M<75A<F5,:7-T)B!S<6QS=%]R968@*0E[(')E='5R;B A*"IT:&ES/3US<6QS
M=%]R968I.R!]#0I].PT*#0I3<75A<F5,:7-T.CI3<75A<F5,:7-T*"!I;G0@
M;D)L;V-K4VEZ92 O*CT@,3 J+R I#0H).B!#3&ES=#P@4W%U87)E+"!3<75A
M<F4F(#XH(&Y";&]C:U-I>F4@*0T*>PT*?0T*#0I3<75A<F5,:7-T.CI^4W%U
M87)E3&ES="@I#0I[#0H)0TQI<W0\(%-Q=6%R92P@4W%U87)E)B ^.CI^0TQI
M<W0H*3L-"GT-"@T*4W%U87)E3&ES=#HZ4W%U87)E3&ES="@@4W%U87)E3&ES
M="8@<W%L<W1?<F5F("D-"GL-"@DO+R!#;W!Y('1H92!O=&AE<B!L:7-T+BXN
M#0H)*G1H:7,]('-Q;'-T7W)E9CL-"GT-"@T*4W%U87)E3&ES="8@4W%U87)E
M3&ES=#HZ;W!E<F%T;W(]*"!3<75A<F5,:7-T)B!S<6QS=%]R968@*0T*>PT*
M"2\O(%)E;6]V92!A;&P@=&AE(&5L96UE;G1S+BXN#0H)=&AI<RT^4F5M;W9E
M06QL*"D[#0H)=&AI<RT^061D2&5A9"@@)G-Q;'-T7W)E9B I.PT*"7)E='5R
M;B J=&AI<SL-"GT-"@T*0D]/3"!3<75A<F5,:7-T.CIO<&5R871O<CT]*"!C
M;VYS="!3<75A<F5,:7-T)B!S<6QS=%]R968@*0T*>PT*"2\O($9I<G-T('1H
M92!E87-Y('1E<W0N+BX-"@EI9B H('1H:7,M/D=E=$-O=6YT*"D@(3T@<W%L
M<W1?<F5F+D=E=$-O=6YT*"D@*0T*"7L-"@D)<F5T=7)N($9!3%-%.PT*"7T-
M"@E3<75A<F4F('-Q7W)E9C$](%-Q=6%R92@I+" F<W%?<F5F,CT@4W%U87)E
M*"D[#0H)4$]3251)3TX@<&]S1F]U;F0[#0H)4$]3251)3TX@<&]S/2!T:&ES
M+3Y'971(96%D4&]S:71I;VXH*3L-"@EW:&EL92@@<&]S("D-"@E[#0H)"7-Q
M7W)E9C$]('1H:7,M/D=E=$YE>'0H('!O<R I.PT*"0EP;W-&;W5N9#T@<W%L
M<W1?<F5F+D9I;F0H('-Q7W)E9C$@*3L-"@D):68@*" H<&]S1F]U;F0@/3T@
M3E5,3"D@?'P@*'-Q7W)E9C(]('-Q;'-T7W)E9BY'971!="@@<&]S1F]U;F0@
M*2D@(3T@<W%?<F5F,2 I#0H)"7L-"@D)"7)E='5R;B!&04Q313L-"@D)?0T*
M"7T-"@ER971U<FX@5%)513L-"GT-"@T*='EP961E9B!#3&ES=#P@4W%U87)E
M3&ES="P@4W%U87)E3&ES="8@/B!3<75A<F5'<FED.PT*#0H-"B\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O
M+R\O+R\O+R\O+R\O+R\O+R\O+R\O+R\O#0H-"FEN="!?=&UA:6XH(&EN="!A
M<F=C+"!40TA!4BH@87)G=EM=+"!40TA!4BH@96YV<%M=("D-"GL-"@EI;G0@
M;E)E=$-O9&4](# [#0H-"@DO+R!I;FET:6%L:7IE($U&0R!A;F0@<')I;G0@
M86YD(&5R<F]R(&]N(&9A:6QU<F4-"@EI9B H(4%F>%=I;DEN:70H.CI'971-
M;V1U;&5(86YD;&4H3E5,3"DL($Y53$PL(#HZ1V5T0V]M;6%N9$QI;F4H*2P@
M,"DI#0H)>PT*"0DO+R!43T1/.B!C:&%N9V4@97)R;W(@8V]D92!T;R!S=6ET
M('EO=7(@;F5E9',-"@D)8V5R<B \/"!?5"@B1F%T86P@17)R;W(Z($U&0R!I
M;FET:6%L:7IA=&EO;B!F86EL960B*2 \/"!E;F1L.PT*"0EN4F5T0V]D93T@
M,3L-"@E]#0H)96QS90T*"7L-"@D)+R\@5$]$3SH@8V]D92!Y;W5R(&%P<&QI
M8V%T:6]N)W,@8F5H879I;W(@:&5R92X-"@D)4W%U87)E3&ES="!S<5]L<W0[
M#0H-"@D)4W%U87)E('-Q*" P+"!?5"@B6F5R;R(I("D[#0H)"7-Q7VQS="Y!
M9&1486EL*"!S<2 I.PT*"0ES<2YM7VY686QU93T@,3L-"@D)<W$N;5]S=')6
M86QU93T@7U0H(D]N92(I.PT*"0ES<5]L<W0N061D5&%I;"@@<W$@*3L-"@D)
M<W$N;5]N5F%L=64](#([#0H)"7-Q+FU?<W1R5F%L=64](%]4*")4=V\B*3L-
M"@D)<W%?;'-T+D%D9%1A:6PH('-Q("D[#0H)"7-Q+FU?;E9A;'5E/2 S.PT*
M"0ES<2YM7W-T<E9A;'5E/2!?5"@B5&AR964B*3L-"@D)<W%?;'-T+D%D9%1A
M:6PH('-Q("D[#0H)"7-Q+FU?;E9A;'5E/2 T.PT*"0ES<2YM7W-T<E9A;'5E
M/2!?5"@B1F]U<B(I.PT*"0ES<5]L<W0N061D5&%I;"@@<W$@*3L-"@D)<W$N
M;5]N5F%L=64](#4[#0H)"7-Q+FU?<W1R5F%L=64](%]4*")&:79E(BD[#0H)
M"7-Q7VQS="Y!9&1486EL*"!S<2 I.PT*"0ES<2YM7VY686QU93T@-CL-"@D)
M<W$N;5]S=')686QU93T@7U0H(E-I>"(I.PT*"0ES<5]L<W0N061D5&%I;"@@
M<W$@*3L-"@D)<W$N;5]N5F%L=64](#<[#0H)"7-Q+FU?<W1R5F%L=64](%]4
M*")3979E;B(I.PT*"0ES<5]L<W0N061D5&%I;"@@<W$@*3L-"@D)<W$N;5]N
M5F%L=64](#@[#0H)"7-Q+FU?<W1R5F%L=64](%]4*")%:6=H="(I.PT*"0ES
M<5]L<W0N061D5&%I;"@@<W$@*3L-"@D)<W$N;5]N5F%L=64](#D[#0H)"7-Q
M+FU?<W1R5F%L=64](%]4*").:6YE(BD[#0H)"7-Q7VQS="Y!9&1486EL*"!S
M<2 I.PT*#0H)"5-Q=6%R94QI<W0@<W%?;'-T,CT@<W%?;'-T.PT*"0EI9B H
M('-Q7VQS=" ]/2!S<5]L<W0R("D-"@D)>PT*"0D)8V]U=" \/"!?5"@B3&ES
M=',@87)E(&5Q=6%L+B(I(#P\(&5N9&P[#0H)"7T-"@D)96QS90T*"0E[#0H)
M"0EC;W5T(#P\(%]4*"),:7-T<R!A<F4@;F]T(&5Q=6%L+B(I(#P\(&5N9&P[
M#0H)"7T-"@T*"0E3<75A<F5'<FED('-Q7V=R:60[#0H)"7-Q7V=R:60N061D
M5&%I;"@@<W%?;'-T("D[#0H)"7-Q7V=R:60N061D5&%I;"@@<W%?;'-T,B I
M.PT*#0H)"7-Q7VQS="Y296UO=F5!;&PH*3L-"@D)<W%?;'-T,BY296UO=F5!
M;&PH*3L-"@T*"0DO+R!2979E<G-E('1H92!R969E<F5N8V5S+BXN#0H)"5!/
M4TE424].('!O<ST@<W%?9W)I9"Y'971(96%D4&]S:71I;VXH*3L-"@D)<W%?
M;'-T,CT@<W%?9W)I9"Y'971.97AT*"!P;W,@*3L-"@D)<W%?;'-T/2!S<5]G
M<FED+D=E=$YE>'0H('!O<R I.PT*#0H)"6EF("@@<W%?;'-T(#T]('-Q7VQS
M=#(@*0T*"0E[#0H)"0EC;W5T(#P\(%]4*"),:7-T<R!A<F4@97%U86PN(BD@
M/#P@96YD;#L-"@D)?0T*"0EE;'-E#0H)"7L-"@D)"6-O=70@/#P@7U0H(DQI
M<W1S(&%R92!N;W0@97%U86PN(BD@/#P@96YD;#L-"@D)?0T*"7T-"@T*"5!2
D15-37T%.65]+15D[#0H)<F5T=7)N(&Y2971#;V1E.PT*?0T*
`
end
-