0

大家好,我的 C 语言有问题,我无法解决,这是我的代码:

void demande_usine_stockage(entrepot *u_s,fournisseur f[],int *demande,delai_appro &d_a,delai_ass &d_ass,usine_ass *u_a,int *attente_stockage,int *attente_assemblage,int *debut_stockage,int *fin_stockage,int *debut_assemblage,int *fin_assemblage,int periode)
{
 u_a->commande_en_souffrance += *demande;
 u_a->niveau_stock=u_a->stock_physique - u_a->commande_en_souffrance;
if (u_a->niveau_stock >= *demande)
 {
       *debut_stockage=periode;
       *fin_stockage=periode+u_a->L_assemblage;
       stockage(u_s,demande,d_a,u_a,debut_stockage,fin_stockage,attente_stockage,periode);
 }
 else
 {
     *debut_stockage=periode+f[1].L;
     *fin_stockage=(periode+u_a->L_assemblage+f[1].L);
     stockage(u_s,demande,d_a,u_a,debut_stockage,fin_stockage,attente_stockage,periode);
     demande_usine_assemblage(f,u_a,d_ass,demande,attente_assemblage,debut_assemblage,fin_assemblage,periode);
 }
}

并且 délai_ass 是一个链表
,这是错误

430 G:\test1.cpp invalid initialization of reference of type 'delai_assemblage*&' from expression of type 'delai_assemblage'

4

2 回答 2

1

如果这真的是 C,而不是 C++,那么将文件重命名为具有.c扩展名,而不是.cpp. C 和 C++ 是两种不同的语言,您不应该将.cpp文件编译为 C 代码。

您还需要删除所有引用类型(其中带有 a&的类型,在标识符之前),因为 C 没有引用。例如:

void demande_usine_stockage(
    entrepot *u_s,
    fournisseur f[],
    int *demande,
    delai_appro *d_a,  // Reference (&) changed to pointer (*)
    delai_ass *d_ass,  // Reference (&) changed to pointer (*)
    usine_ass *u_a,
    int *attente_stockage,
    int *attente_assemblage,
    int *debut_stockage,
    int *fin_stockage,
    int *debut_assemblage,
    int *fin_assemblage,
    int periode)
{
    ...
}
于 2013-06-18T18:16:43.380 回答
0

看起来您正在传递一个预期delai_assemblage指向指针的类型的变量。delai_assemblage我猜你正在传递这样的变量作为d_ass你调用demande_usine_stockage函数的参数。

于 2013-06-19T10:36:29.730 回答