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祝你今天好运~