2014-12-06 184 views
2

我有一個小問題。我一直得到這個錯誤:錯誤:對於這部分代碼(list<lst>* listSearch(list<lst> *LST, char* wrd, KEY key)),從'char'無效轉換爲'char *'錯誤:從'char'無效轉換爲'char *'

我在這裏做錯了什麼?

enum KEY {code, disease} key; 

struct lst 
{ 
    char *_code; 
    char *_disease; 
    lst* next; 
}; 


bool isPartOf(char* word, char* sentence) 
{ 
    unsigned int i=0; 
    unsigned int j=0; 

    for(i;i < strlen(sentence); i++) 
    { 
     if(sentence[i] == word[j]) 
     { 
      j++; 
     } 
    } 

    if(strlen(word) == j) 
     return true; 
    else 
     return false; 
} 

list<lst>* listSearch(list<lst> *LST,char* wrd,KEY key) 
{ 
    list<lst> resultList; 
    list<lst>* result; 

    switch(key) 
    { 
    case code: 
     for(list<lst>::iterator i = LST->begin(); i != LST->end(); i++) 
     { 
      if(isPartOf(wrd, *i._code)) 
      { 
       resultList.push_back(*i); 
      } 
     } 
     break; 

    case disease: 
     for(list<lst>::iterator i = LST->begin(); i != LST->end(); i++) 
     { 
      if(isPartOf(wrd, *i->_disease)) 
       resultList.push_back(*i); 
     } 
     break; 
    } 

    result = &resultList; 

    return result; 
} 
+1

你最近怎麼調用最後一個函數? – 2014-12-06 19:09:39

+2

您在編譯器告訴您的行(您甚至沒有向我們提到過)上傳遞'char'來代替'char *'。它爲什麼會起作用? – chris 2014-12-06 19:09:57

+3

請切換到'std :: string'來避免這類問題。 – 2014-12-06 19:16:01

回答

2

它看起來像一個編譯器錯誤。至少編譯器應該發出另一個錯誤消息。

該問題與操作員優先級有關。這種說法

if(isPartOf(wrd, *i._code)) 

必須這樣寫

if(isPartOf(wrd, (*i)._code)) 

看來,編譯器發出的錯誤此語句

if(isPartOf(wrd, *i->_disease)) 

必須這樣寫

if(isPartOf(wrd, i->_disease)) 

因爲表達離子*i->_disease有char類型,但必須將類型對象傳遞給函數char *

而使用此函數會導致未定義的行爲,因爲它返回指向本地對象的指針。

list<lst>* listSearch(list<lst> *LST,char* wrd,KEY key) 
{ 
    list<lst> resultList; 
    list<lst>* result; 

    //... 

    result = &resultList; 

    return result; 
} 

考慮到函數isPartOf在邏輯上是錯誤的。例如,當word等於「ab」且sentence等於「a1111b」時,該函數將返回true。我不認爲你的意思是這個邏輯。

+0

「必須寫成」?是不是使用'i - > _ code'認爲更清楚? – 2014-12-06 19:34:57

+0

@Tim Seguine我展示了使用operator *的正確語法。 – 2014-12-06 19:38:38

+0

我知道。我建議(除了你寫的內容之外)推薦一個更清楚的,更習慣於寫同一個東西的語法。 – 2014-12-06 19:40:51

相關問題