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

Recommended Answers

All 6 Replies

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

Same answer: use the . operator.

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

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.