2012-05-09 41 views
1

所以我得到這個:數據類型匹配,但我的鏈接列表仍然出現錯誤?

Error: Argument of type "Person *" is incompatible with type "Person *"

我不知道我做錯了。我確定這是愚蠢的,但如果有人能指出這將是偉大的。

LL* g_list; 
int size = 50; 

char getOption(); 

int main() 
{ 
    char input; 
    bool running = true; 
    g_list = new LL; 

    char* name = new char[size]; 
    char* color = new char[size]; 
    cout << "enter name: "; 
    cin >> name; 
    cout << "enter color: "; 
    cin >> color; 
    Person* pers = new Person(name, color); 

    g_list->addBack(pers); //error 

    return 0; 
} 

//LL.cpp file (linked list) 
void LL::addBack(Person* pobj) 
{ 
    if (count_ == 0) 
    { 
     head_ = pobj; 
    } 
    else 
    { 
     Person* ptr = head_; 
     for (int i = 0; i < count_ - 1; i++) 
     { 
      ptr = ptr->next_; 
     } 

     ptr->next_ = pobj; 
    } 

    count_++; 
    pobj->next_ = 0; 

    return; 
} 

//Person constructor 
Person::Person(char* name, char* color) 
{ 
    name_ = new char[strlen(name)]; 
    strcpy(name_, name); 

    color_ = new char[strlen(color)]; 
    strcpy(color_, color); 

    next_ = 0; 
} 

讓我知道是否需要更多信息。

+4

使用的Person定義是有你爲什麼不使用字符串的原因嗎? – DumbCoder

+0

我們需要一個http://sscce.org/。 – Griwes

+2

你的代碼片段太長又太短。它包含大量可以刪除的材料,並且仍然會重現您的錯誤。此外,它缺少能夠讓我們編譯它的關鍵材料。請將您的程序減少到*最小*,*完整*程序仍然有錯誤(提示:它應該大約15-20行)。將** whole **程序複製粘貼到您的問題中。請參閱http://sscce.org/。 –

回答

2

看起來很奇怪,因爲類型據報道是相同的。我只能想到一個原因:你有兩個不同的Person類型,它們是衝突的。你需要從揣摩出在main()中的Person定義未來和比較,在LL::addBack()

+1

例如,你可能在LL類中有前向聲明的class Person; –

相關問題