Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我可以做c++;代码结构可以看到对方吗?_C++_Structure - Fatal编程技术网

C++ 我可以做c++;代码结构可以看到对方吗?

C++ 我可以做c++;代码结构可以看到对方吗?,c++,structure,C++,Structure,我不擅长英语。。对不起 比如说, struct structure1 { structure2 st; } struct structure2 { structure1 st; } 它有不完整的类型错误 如何使用此代码 它在java中工作得很好,但是C++中我认为是因为自顶向下进程…< /p> 我想知道它是否有好的效果 这是我真正的密码 它是图形算法的一部分 struct Edge { Node destination; int capacity; i

我不擅长英语。。对不起

比如说,

struct structure1
{
   structure2 st;
}

struct structure2
{
   structure1 st;
}
它有不完整的类型错误

如何使用此代码

它在java中工作得很好,但是C++中我认为是因为自顶向下进程…< /p> 我想知道它是否有好的效果

这是我真正的密码

它是图形算法的一部分

struct Edge
{
    Node destination;

    int capacity;

    int cost;

    Edge dual;

    Edge(Node n, int c, int s)
    {
        capacity = c;

        cost = s;

        destination = n;

        dual.cost = -9999;
    }

};

struct Node
{
    int cost;

    vector<Edge> edges;

    Edge from;

    string name;

    bool onq;

    Node()
    {
        from.capacity = -9999;
    }

    void clear()
    {
        cost = 0;
        edges.clear();
        from.capacity = -9999;
    }
};
struct-Edge
{
节点目的地;
国际能力;
国际成本;
边对偶;
边(节点n、int c、int s)
{
容量=c;
成本=s;
目的地=n;
双重成本=-9999;
}
};
结构体类型
{
国际成本;
矢量边;
边缘来自;
字符串名;
布尔翁克;
节点()
{
from.capacity=-9999;
}
无效清除()
{
成本=0;
边。清除();
from.capacity=-9999;
}
};

谢谢

不,你不能这样做。这将是一个无休止的递归

不过,您可以使用引用或指针。请参见如何执行此操作:

struct structure2; // <<< forward declaration 
struct structure1
{
   structure2* st; // <<< use a pointer (or reference) 
   structure1(structure2* s2) : st(s2) {} // <<< initialize the pointer
};

struct structure2
{
   structure1 st;
   structure2() : st(this) {} // <<< pass the pointer
};

structure2;//谢谢,但是我想知道这个代码不是同一个变量。我修改我的问题,看看我的真实代码,它在爪哇工作得很好,但是C++。谢谢@ParkYeoungJun“那st不是同一个变量”好吧,一个是
structure1
的成员,另一个是
structure2
的成员,他们有相同的名字,这并不意味着他们之间有任何关系。是的,我修改的变量与我的问题无关,我的代码可以看到,谢谢大家的关注。这和我在回答中所说的基本相同。您可以向前声明
节点
,并在
边缘
中为其使用指针或引用不起作用。我不知道它的用途,但是如果你想引用另一个
Edge
实例,请再次使用指针或引用。顺便说一下,它在Java中工作的原因是,在Java中,当你声明一个类类型的变量时,你实际上是在创建一个引用(类似于C++中的指针),而不是该类的实际对象。实际对象是在堆上创建的,例如,
st=newstructure1()我发现了错误并修复了它:D谢谢~~该睡觉了。。早上3:30祝你今天好运~