ShAd
ShAd

Reputation: 57

Accessing a structure through another structure member in C++

I'm trying to access a structure using another structure. From the below program, element is the member of Node. At this line " temp->element *e_temp;", I couldn't link the "element" member of Node to the "elements" structure object. compile error says "'e_temp' was not declared in this scope". What am I missing?

#include <vector>
#include <cstdlib>
using namespace std;
typedef struct Elements
{
    int data;
    struct Elements *next;
}elements;

typedef struct Node
{
    int sno;
    elements *element;
    struct Node *next;
}node;

void add(int sno, vector<int> a)
{
    node *temp;
    temp = new node;

    temp->element *e_temp;
    e_temp = new elements;


    temp->sno = sno;
    while(a.size())
    {
        temp->e_temp->data = a[0];
        temp->e_temp = temp->e_temp->next;
        a.erase(a.begin());    
    }
}


int main()
{
    vector<int> a{1,2,3};
    int sno = 1;
    add(sno, a);
    return 0;
}

Upvotes: 0

Views: 476

Answers (2)

Taekahn
Taekahn

Reputation: 1707

If you're just looking to declare a local you can do auto e_temp = new elements but what i think you want is this for that line temp->element = new elements; and then follow up with the rest of your code to reference temp's element instead of e_temp.

    temp->element->data = a[0];
    temp->element = temp->element->next

Also, i'd try to get out the habit of using new and use std::shared_ptr and std::unique_ptr instead.

Upvotes: 1

vcloarec
vcloarec

Reputation: 138

The correct declaration for e_temp is

elements * e_temp;

but e_temp is not use of any part of your code.

Upvotes: 0

Related Questions