“delai_assemblage *&”类型的引用无效初始化来自'delai_assemblage'类型的表达

时间:2013-06-18 17:46:47

标签: c++ pointers linked-list

嗨,每个人都有语言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'

2 个答案:

答案 0 :(得分:1)

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

您还需要删除所有引用类型(标识符前面带有&的类型),因为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)
{
    ...
}

答案 1 :(得分:0)

看起来您传递的是delai_assemblage类型的变量,其中指向delai_assemblage的指针。我猜你在调用d_ass函数的demande_usine_stockage参数传递了这样的变量。