Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #12542
| From | john <gh14tq5@yahoo.com> |
|---|---|
| Newsgroups | comp.lang.c++ |
| Subject | Re: would you consider this function const? |
| Date | 2011-12-15 09:30 -0500 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <jcd09b$umt$1@speranza.aioe.org> (permalink) |
| References | (1 earlier) <jcai9t$ee9$1@dont-email.me> <jccrkj$uec$1@speranza.aioe.org> <jccs9c$ovg$1@dont-email.me> <jcctkm$i7j$1@speranza.aioe.org> <jccv7e$8if$1@dont-email.me> |
>>
>> One of the issues that spurred this question (related to my func1 in the
>> original post) is the following. I have a 3D mesh composed of
>> Volumes/Faces/Edges/Vertices. So, I have a Volume, Face, Edge, and
>> Vertex class, each derived from a base Topology class. The mesh is
>> consistent, so given a particular instance of one of the classes, there
>> are functions that return geometry information such as connectivity. In
>> particular, each class has a virtual function (declared as pure virtual
>> at the base Topology class)
>>
>> virtual void GetVolumes(std::set<Volume*> volumes);
>
> That doesn't look right. Did you lose the ampersand before the argument
> name?
>
Yes, it should be
virtual void GetVolumes(std::set<Volume*>& volumes);
>>
>> that returns a list of pointers to the volumes associated with the
>> entity. I want to make this function 'const' since it does not change
>> the element. For a Face, Edge, and Vertex, this poses no problem.
>> However, for a volume instance, the function should return a pointer to
>> just itself, so if GetVolumes is const, then I have
>>
>> void Volume::GetVolumes(std::set<Volume*> volumes) const
>> {
>> volumes.clear();
>> volumes.insert(const_cast<Volume*>(this));
>> }
>>
>> I do not see how to have the GetVolumes function const without the use
>> of const_cast in the Volume::GetVolumes function. Is there a more
>> intelligent way to get the same result?
>
> What happens if you change the type of the argument to
>
> std::set<const Volume*>
>
> ? If it's a set of constant volumes, that's what the type should
> express. If you find it difficult to type, use a typedef *or* introduce
> some kind of 'Volume proxy' and keep that instead of the pointer to Volume.
I will have to look at whether I can do that or not. My guess is that,
for the most part, I will need non-const Volume*'s. It's a huge code
base, so a change like that could ripple to a lot of places.
John
Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
would you consider this function const? john <gh14tq5@yahoo.com> - 2011-12-14 10:17 -0500
Re: would you consider this function const? Victor Bazarov <v.bazarov@comcast.invalid> - 2011-12-14 11:19 -0500
Re: would you consider this function const? john <gh14tq5@yahoo.com> - 2011-12-15 08:10 -0500
Re: would you consider this function const? Victor Bazarov <v.bazarov@comcast.invalid> - 2011-12-15 08:21 -0500
Re: would you consider this function const? john <gh14tq5@yahoo.com> - 2011-12-15 08:44 -0500
Re: would you consider this function const? Leigh Johnston <leigh@i42.co.uk> - 2011-12-15 14:07 +0000
Re: would you consider this function const? Leigh Johnston <leigh@i42.co.uk> - 2011-12-15 14:14 +0000
Re: would you consider this function const? Victor Bazarov <v.bazarov@comcast.invalid> - 2011-12-15 09:11 -0500
Re: would you consider this function const? john <gh14tq5@yahoo.com> - 2011-12-15 09:30 -0500
Re: would you consider this function const? Victor Bazarov <v.bazarov@comcast.invalid> - 2011-12-15 10:06 -0500
Re: would you consider this function const? john <gh14tq5@yahoo.com> - 2011-12-15 12:42 -0500
Re: would you consider this function const? Victor Bazarov <v.bazarov@comcast.invalid> - 2011-12-15 13:32 -0500
Re: would you consider this function const? yatremblay@bel1lin202.(none) (Yannick Tremblay) - 2011-12-19 18:16 +0000
Re: would you consider this function const? Tobias Müller <troplin@bluewin.ch> - 2011-12-19 19:05 +0000
Re: would you consider this function const? Joshua Maurice <joshuamaurice@gmail.com> - 2011-12-19 14:36 -0800
Re: would you consider this function const? Tobias Müller <troplin@bluewin.ch> - 2011-12-20 06:28 +0000
Re: would you consider this function const? Joshua Maurice <joshuamaurice@gmail.com> - 2011-12-19 23:48 -0800
csiph-web