954,499 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Structure of Arrays in C++ using NEW operator

HI guys,

This code dosn't compile, I think it is right but it gives an error when i use the -> to access the members of my struct.

#include
#include
#define MAX_EVENTS 100


//Structure for Queue Elements
struct Event
{
int event_type;
int time_value;
int bus_num;
int bus_stop;
};


void main()
{
Event *eventPtr;
// EventPtr event_queue;

eventPtr = new Event[MAX_EVENTS];

event_queue[0]->event_type = 1;
event_queue[0]->time_value = 2;
event_queue[0]->bus_num = 0;
event_queue[0]->bus_stop = 1;

}

It works when i create it without using the "new" operator. But this way it dosn't. WHat's going on here? I'm using the Visual C++ 6.0 compiler.

thanks..

F50
Newbie Poster
6 posts since Feb 2005
Reputation Points: 10
Solved Threads: 0
 

Try this:

int main()
{
// EventPtr event_queue;
   Event *eventPtr;
   eventPtr = new Event[MAX_EVENTS];

   eventPtr[0].event_type = 1;
   eventPtr[0].time_value = 2;
   eventPtr[0].bus_num = 0;
   eventPtr[0].bus_stop = 1;
   return 0;
}
Dave Sinkula
long time no c
Team Colleague
5,058 posts since Apr 2004
Reputation Points: 2,780
Solved Threads: 314
 

I'm sorry, i cut and pasted the wrong thing last time. It should have pasted it like this.

#include
#include
#define MAX_EVENTS 100


//Structure for Queue Elements
struct Event
{
int event_type;
int time_value;
int bus_num;
int bus_stop;
};


void main()
{
Event *eventPtr;

eventPtr = new Event[MAX_EVENTS];

eventPtr[0]->event_type=1;
eventPtr[0]->time_value = 2;
eventPtr[0]->bus_num = 0;
eventPtr[0]->bus_stop = 1;

}

when i compile that it says. "error C2819: type 'Event' does not have an overloaded member 'operator ->'"

F50
Newbie Poster
6 posts since Feb 2005
Reputation Points: 10
Solved Threads: 0
 

Same answer: use the . operator.

Dave Sinkula
long time no c
Team Colleague
5,058 posts since Apr 2004
Reputation Points: 2,780
Solved Threads: 314
 

okay. thanks. I was just wondering why the -> operator wasn't working.

Also, would it be possible to create this same structure, but with a doubly linked ring, or a balanced tree? Instead of using arrays.

Links to already compilable data strucutres would be great. Professor said that is okay to use since it is not the focus of this program.

F50
Newbie Poster
6 posts since Feb 2005
Reputation Points: 10
Solved Threads: 0
 
I was just wondering why the -> operator wasn't working.

Because the-> operator is used with a pointer; eventPtr[0] is not a pointer, it is an object. The . operator is used with an object.

Dave Sinkula
long time no c
Team Colleague
5,058 posts since Apr 2004
Reputation Points: 2,780
Solved Threads: 314
 

eventPtr[0] is a variable associated with a memory address.
Pointers store the address of some other variable associated with a memory address. We dereference the pointer to get the value that is stored at the memory location in the pointer, ie using '->'.

Intel
Light Poster
30 posts since Feb 2005
Reputation Points: 10
Solved Threads: 1
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You