<div style="color:black;font: 10pt Arial, Helvetica, sans-serif;">
<div> <font size="2">Hey Carl, Just another word. Anytime things are getting a bit verbose with many references to a some nicely named class instance as in your example. I alias it with a shorthand name within the confines of any function that has many references.<br>
</font></div>

<div><font size="2"><br>
</font></div>

<div><font size="2">I think this is about right looking at your example. If not, I blame it on not having a C++ compiler in my email editor ;)<br>
</font></div>

<div><font size="2"><br>
</font></div>

<div><br>
</div>

<div><font size="2"><span style="font-family:sans-serif;">  otherClass *<span style="font-family: Arial, Helvetica, sans-serif;">sr = &</span>storedReferenceToOtherClass;<span style="font-family: Arial, Helvetica, sans-serif;">   // shorthand, typically I define near top of function <br>
</span></span></font></div>

<div><br>
</div>

<div><font size="2">  sr->function1()  <br>
</font></div>

<div><font size="2">  sr->function2()</font></div>

<div><font size="2">  ... <br>
</font></div>

<div><font size="2"><br>
</font></div>

<div><font size="2">Same thing applies to descriptive variables. If the same variable gets used many times, I am apt to alias it.</font></div>

<div><font size="2">Of course if it is read only I make a copy of it, if not then pointer to it in C, in Java I just do an assignment at the <br>
</font></div>

<div><font size="2">end of the method... <br>
</font></div>

<div><font size="2"><br>
</font></div>

<div><font size="2">int tc = totalNumberOfToadsPresentInCurrrentToadPen;</font></div>

<div><font size="2"><br>
</font></div>

<div><font size="2"><br>
</font></div>

<div><font size="2">My rule is short names will be found in local variable declarations with comment OR be an alias of some long name just after the local variable declarations.<br>
</font></div>

<div><font size="2"><br>
</font></div>

<div><font size="2">Just some ideas... <br>
</font></div>

<div><font size="2"><br>
</font></div>

<div><font size="2"><br>
</font></div>

<div><font size="2">Ron<br>
</font></div>

<div><font size="2"><br>
</font></div>

<div><font size="2"></font><br>
</div>

<div> <br>
</div>

<div> <br>
</div>

<div style="font-family:arial,helvetica;font-size:10pt;color:black"><font size="2">-----Original Message-----<br>
From: Carl Ott via DPRGlist <dprglist@lists.dprg.org><br>
To: jesse brockmann <jjbrockm@gmail.com>; Jian Shi <jshi.fyu@gmail.com><br>
Cc: DPRG D-List <dprglist@dprg.org><br>
Sent: Sun, Mar 7, 2021 9:25 am<br>
Subject: Re: [Dprglist] Help with C++ design patterns<br>
<br>

<div id="yiv3126495118">
<div>
<div dir="ltr"><br clear="none">
<div>Cool thank guys - </div>

<div>Sounds like a valid design pattern but with garbled syntax...</div>
</div>
<br clear="none">
<div class="yiv3126495118yqt2066620742" id="yiv3126495118yqt03054">
<div class="yiv3126495118gmail_quote">
<div class="yiv3126495118gmail_attr" dir="ltr">On Sun, Mar 7, 2021 at 9:14 AM jesse brockmann <<a rel="nofollow noopener noreferrer" shape="rect" ymailto="mailto:jjbrockm@gmail.com" target="_blank" href="mailto:jjbrockm@gmail.com">jjbrockm@gmail.com</a>> wrote:<br clear="none"></div>
<blockquote class="yiv3126495118gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">
<div>
<div>In the class definition use <br clear="none"><span style="font-family:sans-serif;">otherClass *storedReferenceToOtherClass;</span></div>

<div><span style="font-family:sans-serif;"><br clear="none"></span></div>

<div><span style="font-family:sans-serif;"><br clear="none"></span></div>

<div><font face="sans-serif">And for the calls use</font></div>

<div><font face="sans-serif"><br clear="none"></font></div>

<div><span style="font-family:sans-serif;">storedReferenceToOtherClass->function ()</span><font face="sans-serif"><br clear="none"></font></div>

<div><font face="sans-serif"><br clear="none"></font></div>

<div><font face="sans-serif"><br clear="none"></font></div>

<div><font face="sans-serif"><br clear="none"></font>
<div class="yiv3126495118gmail_quote">
<div class="yiv3126495118gmail_attr" dir="ltr">On Sun, Mar 7, 2021, 8:32 AM Carl Ott via DPRGlist <<a rel="nofollow noopener noreferrer" shape="rect" ymailto="mailto:dprglist@lists.dprg.org" target="_blank" href="mailto:dprglist@lists.dprg.org">dprglist@lists.dprg.org</a>> wrote:<br clear="none"></div>
<blockquote class="yiv3126495118gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">
<div dir="ltr"><br clear="none">
<div>Can somebody help with C++ design patterns?<br clear="none"><br clear="none">I have a class with many methods (first class), that needs access to members of another class (other class).<br clear="none">Surely I can pass a reference to the other class into every method of the first class.<br clear="none">But that seems like a verbose pain.<br clear="none">Instead, I'd like to initialize the first class with a reference or pointer to the other class. Then the first class could use the cached reference or pointer to the other class whenever it's needed.<br clear="none">However, I'm missing something - not getting it to work.</div>

<div><br clear="none">Am I just missing syntax or am I fundamentally trying to implement an anti-pattern?<br clear="none"><br clear="none">What are some best practices design patterns to accomplish this?  Any recommendations - where to find a quick tutorial?<br clear="none"><br clear="none"><br clear="none">here's an abstract of what isn't working...<br clear="none"><br clear="none">class needsToStoreAreference  <br clear="none">{<br clear="none"></div>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;">
<div>public:</div>
</blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;">
<div>     cacheAreference(otherClass &desiredReference);</div>
</blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;">
<div>private:</div>
</blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;">
<div>     otherClass &storedReferenceToOtherClass;</div>
</blockquote></blockquote>
<div>}<br clear="none"><br clear="none">needsToStoreAreference::cacheAreference(otherClass &desiredReference)<br clear="none">{<br clear="none"></div>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;">
<div>     

storedReferenceToOtherClass

= desiredReference;     </div>

<div> // doesn't work, causes an Arduino program to hang</div>
</blockquote>
<div>}<br clear="none"><br clear="none"><br clear="none"><br clear="none">And in the calling code<br clear="none"><br clear="none">needsToStoreAreference instanceOfNeedsToStore();       // instance of 'first class' in wording above<br clear="none"><br clear="none">otherClass instanceOfOtherClass();               // instance of 'other class' in wording above<br clear="none"><br clear="none">instanceOfNeedsToStore.cacheAreference(instanceOfOtherClass);<br clear="none"><br clear="none"></div>
</div>

_______________________________________________<br clear="none">
DPRGlist mailing list<br clear="none">
<a rel="nofollow noopener noreferrer" shape="rect" ymailto="mailto:DPRGlist@lists.dprg.org" target="_blank" href="mailto:DPRGlist@lists.dprg.org">DPRGlist@lists.dprg.org</a><br clear="none">
<a rel="nofollow noopener noreferrer" shape="rect" target="_blank" href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a><br clear="none">
</blockquote></div>
</div>
</div>

</blockquote></div>
</div>

</div>
</div>

<div class="yqt2066620742" id="yqt82003">_______________________________________________<br clear="none">DPRGlist mailing list<br clear="none"><a shape="rect" ymailto="mailto:DPRGlist@lists.dprg.org" href="mailto:DPRGlist@lists.dprg.org">DPRGlist@lists.dprg.org</a><br clear="none"><a shape="rect" href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org" target="_blank">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a><br clear="none"></div>
</font></div>
</div>