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 <stdio.h>
#include <stddef.h>
#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..

Edited 3 Years Ago by happygeek: fixed formatting

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;
}

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

#include <stdio.h>
#include <stddef.h>
#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 ->'

Edited 3 Years Ago by pyTony: fixed formating

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.

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.

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 '->'.

This article has been dead for over six months. Start a new discussion instead.