Connecting Tech Pros Worldwide Help | Site Map

Nested Vector Nester Classes are Nested in my Brain

  #1  
Old November 8th, 2005, 02:45 AM
Chad E. Dollins
Guest
 
Posts: n/a

Hello someone said that I should check this forum out for help to my c++
problems.

I will admit at this point I may have really ran myself into the ground
with this code that I am writing, but I'm hoping for a little help from
you guys.

I have a class that needs use of a bread-first search of a quareney tree.
In this class I have a nested class that should be the implementation of a
tree that contains two nested classes of its own. Those two classes are a
Position representation of cartestian coordinate with accessors and
modifiers and comparison methods. The other inner class is a treenode
class. This class holds several things, first of all a * to a vector of
TreeNode * that represent children nodes, A Position as its Payload, A *
to the parent TreeNode, and * pointer to a Maze object no mentioned above.

So, my problem is that as I iterate over my children vector I would like
to access the payload members accessors of the current treenode in the
vector. Except I get this instead:
error: request for member `payload' in `
*(&p1)->__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator->
[with _Iterator = cs371p::prog::robowars4::Robot::Tree::TreeNode**,
_Container =
std::vector<cs371p::prog::robowars4::Robot::Tree:: TreeNode*,
std::allocator<cs371p::prog::robowars4::Robot::Tre e::TreeNode*> >]()',
which
is of non-class type `cs371p::prog::robowars4::Robot::Tree::TreeNode*'

The line of code looks like this:
vector< TreeNode *>::iterator p1;
for(p1 = children->begin();p1 != children->end();++p1)
This LINE RIGHT HERE->>>> p1->payload->getX();

Please, lemme know what you think any feed back is appreciated

--Chad
  #2  
Old November 8th, 2005, 03:05 AM
Kai-Uwe Bux
Guest
 
Posts: n/a

re: Nested Vector Nester Classes are Nested in my Brain


Chad E. Dollins wrote:
[color=blue]
>
> Hello someone said that I should check this forum out for help to my c++
> problems.
>
> I will admit at this point I may have really ran myself into the ground
> with this code that I am writing, but I'm hoping for a little help from
> you guys.
>
> I have a class that needs use of a bread-first search of a quareney tree.
> In this class I have a nested class that should be the implementation of a
> tree that contains two nested classes of its own. Those two classes are a
> Position representation of cartestian coordinate with accessors and
> modifiers and comparison methods. The other inner class is a treenode
> class. This class holds several things, first of all a * to a vector of
> TreeNode * that represent children nodes, A Position as its Payload, A *
> to the parent TreeNode, and * pointer to a Maze object no mentioned above.
>
> So, my problem is that as I iterate over my children vector I would like
> to access the payload members accessors of the current treenode in the
> vector. Except I get this instead:
> error: request for member `payload' in `
> *(&p1)->__gnu_cxx::__normal_iterator<_Iterator,
> _Container>::operator->
> [with _Iterator = cs371p::prog::robowars4::Robot::Tree::TreeNode**,
> _Container =
> std::vector<cs371p::prog::robowars4::Robot::Tree:: TreeNode*,
> std::allocator<cs371p::prog::robowars4::Robot::Tre e::TreeNode*> >]()',
> which
> is of non-class type `cs371p::prog::robowars4::Robot::Tree::TreeNode*'
>
> The line of code looks like this:
> vector< TreeNode *>::iterator p1;
> for(p1 = children->begin();p1 != children->end();++p1)
> This LINE RIGHT HERE->>>> p1->payload->getX();[/color]

Try
(*p1)->payload->getX();

Keep in mind: p1 is an iterator; *p1 is the element of the vector it
designates; this element is itself a pointer pointing to some element that
presumably has a member "payload".
[color=blue]
>
> Please, lemme know what you think any feed back is appreciated
>
> --Chad[/color]


Best

Kai-Uwe Bux
  #3  
Old November 8th, 2005, 04:35 AM
Chad E. Dollins
Guest
 
Posts: n/a

re: Nested Vector Nester Classes are Nested in my Brain



Ok same question as before accept this temp trying to call member function
with from an index of the vector<TreeNode * > * myMoves
error ridden code:

myMoves[x]->makeChildren();


On Mon, 7 Nov 2005, Kai-Uwe Bux wrote:
[color=blue]
> Chad E. Dollins wrote:
>[color=green]
>>
>> Hello someone said that I should check this forum out for help to my c++
>> problems.
>>
>> I will admit at this point I may have really ran myself into the ground
>> with this code that I am writing, but I'm hoping for a little help from
>> you guys.
>>
>> I have a class that needs use of a bread-first search of a quareney tree.
>> In this class I have a nested class that should be the implementation of a
>> tree that contains two nested classes of its own. Those two classes are a
>> Position representation of cartestian coordinate with accessors and
>> modifiers and comparison methods. The other inner class is a treenode
>> class. This class holds several things, first of all a * to a vector of
>> TreeNode * that represent children nodes, A Position as its Payload, A *
>> to the parent TreeNode, and * pointer to a Maze object no mentioned above.
>>
>> So, my problem is that as I iterate over my children vector I would like
>> to access the payload members accessors of the current treenode in the
>> vector. Except I get this instead:
>> error: request for member `payload' in `
>> *(&p1)->__gnu_cxx::__normal_iterator<_Iterator,
>> _Container>::operator->
>> [with _Iterator = cs371p::prog::robowars4::Robot::Tree::TreeNode**,
>> _Container =
>> std::vector<cs371p::prog::robowars4::Robot::Tree:: TreeNode*,
>> std::allocator<cs371p::prog::robowars4::Robot::Tre e::TreeNode*> >]()',
>> which
>> is of non-class type `cs371p::prog::robowars4::Robot::Tree::TreeNode*'
>>
>> The line of code looks like this:
>> vector< TreeNode *>::iterator p1;
>> for(p1 = children->begin();p1 != children->end();++p1)
>> This LINE RIGHT HERE->>>> p1->payload->getX();[/color]
>
> Try
> (*p1)->payload->getX();
>
> Keep in mind: p1 is an iterator; *p1 is the element of the vector it
> designates; this element is itself a pointer pointing to some element that
> presumably has a member "payload".
>[color=green]
>>
>> Please, lemme know what you think any feed back is appreciated
>>
>> --Chad[/color]
>
>
> Best
>
> Kai-Uwe Bux
>[/color]
  #4  
Old November 8th, 2005, 05:05 AM
Kai-Uwe Bux
Guest
 
Posts: n/a

re: Nested Vector Nester Classes are Nested in my Brain


Chad E. Dollins wrote:
[color=blue]
>
> Ok same question as before accept this temp trying to call member function
> with from an index of the vector<TreeNode * > * myMoves
> error ridden code:
>
> myMoves[x]->makeChildren();[/color]

You just need to keep track of the types involved:

myMoves is a *pointer* to a *vector* of *pointers*. Thus, first dereference
(now you have a vector) then use the subscript operator (now you have a
pointer), then dereference again to call the member function.

((*myMoves)[x])->makeChildren();


Best

Kai-Uwe Bux
Closed Thread