vikasm
vikasm

Reputation: 33

Accessing a array of Structs using pointer notation

I am trying to learn C++ on my own and was trying out this. I have a struct one of whose member is an array of another structs. I have a question about alternative notation.

The structs that I have defined are

struct employeeRecordT {
    string name;
    string title;
    string ssnum;
    double salary;
    int withholding;
};

struct payrollT {
    int num;
    employeeRecordT *array;
} payroll;

I am allotting memory to payroll using the following construct

payroll.array = new employeeRecordT[payroll.num];

where payroll.num is indicating the number of elements in the array. I can access the element name of the employeeRecordT by using the array notation e.g.

payroll.array[i].title

I wanted to know how to access this using the pointer notation, I have tried

payroll.(array+i)->name = "Vikas";

and I get the following error message from g++

toy.cc:30:13: error: expected unqualified-id before '(' token toy.cc:30:14: error: 'array' was not declared in this scope

I am trying to understand what I should be using and why? Could you guys help explain.

Thanks in advance.

Regards, Vikas

Upvotes: 3

Views: 1158

Answers (2)

badgerr
badgerr

Reputation: 7982

(payroll.array+i)->name = "Vikas";

array is a member of payroll, so when you were doing payroll.(array+i), the bracket notation (i.e. "do this first") was trying to use a variable array, and not the one within the scope of payroll.

Of course, using C++, the better solution is Neils. Use a std::vector instead of your own dynamically allocated storage if possible.

Upvotes: 7

user2100815
user2100815

Reputation:

If it hurts, don't do it. Use a std::vector of your structures instead.

Upvotes: 5

Related Questions