通过 C++ 中的另一个结构成员访问结构



我正在尝试使用另一个结构访问一个结构。从下面的程序中,元素是 Node 的成员。在此行"temp->element *e_temp;",我无法将 Node 的"元素"成员链接到"元素"结构对象。 编译错误显示"'e_temp'未在此范围内声明"。我错过了什么?

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

如果您只是想声明一个本地,您可以做auto e_temp = new elements但我认为您想要的是该行temp->element = new elements;然后跟进代码的其余部分以引用 temp 的元素而不是e_temp。

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

另外,我会尝试摆脱使用new的习惯,改用std::shared_ptrstd::unique_ptr

e_temp的正确声明是

elements * e_temp;

e_temp不是使用代码的任何部分。

相关内容

  • 没有找到相关文章

最新更新