我的代码:
#include<iostream>
using namespace std;
struct element
{
int liczba;
element *nastepny;
element();
};
element::element()
{
nastepny=0;
}
int main()
{
element pierwszy;
pierwszy.liczba=1;
element drugi;
(*nastepny).pierwszy=2;
drugi.liczba=2;
return 0;
}
它说* nastepny没有被宣布,但我不知道怎么可能。我用* nastepny创建了结构。如果我写了element * nastepny,它说该元素没有名为pierwszy的成员。因为在主要功能开始时声明了pierwszy,所以出现了问题。
答案 0 :(得分:3)
(*nastepny).pierwszy=2;
这没有任何意义,因为nastepny
未被静态声明或在其当前或任何父范围内。它是您的结构的成员,仅作为其一部分和实例存在。
此外,您不能简单地将两个分配给某个未分配指针的地址。你有一个指针,但它还没有指向任何有效的。所以,要么:
drugi.nastepny = malloc(sizeof *drugi.nastepny);
*drugi.nastepny = whatever;
动态分配空间,或......
drugi.nastepny = &some_variable;
但请关注最后一个问题的终身问题。
答案 1 :(得分:2)
错误发生在
中(*nastepny).pierwszy=2;
^^^^^^^^
nastepny
未在此范围内声明。结构的成员不能在struct(instances)之外访问它。
我猜你的意思是这样的:
drugi.nastepny = &pierwszy;
drugi.nastepny->liczba = 2;
答案 2 :(得分:1)
我提出这个:
pierwszy.nastepny = &drugi;
答案 3 :(得分:1)
我不确定当你从未指定内存地址时,如果你的指针需要一个对象,你是否期望得到一个对象?
如果要获取指向对象本身的指针,则可以使用this
指针。然而,在这种情况下,这样的应用是没有意义的。
您提供给元素指针的唯一赋值是0(NULL),因此它不指向任何元素对象。