所以我有一個類「Sentence」#包含「單詞」。沒有定義類函數的返回類型
句子是單詞的鏈接列表。
我的任務規定,我不得不超負荷「運營商+」,使
Sentence s = "dog jumped.";
Word w = "The";
W+s; //should return a new sentence that says "The dog jumped high."
請記住,我必須重載operator +。這就是我正在分級
但是,因爲,句子包括單詞,它尚未定義。我會得到一個錯誤
return type 'class Sentence' is incomplete
和 無效使用不完全類型「常量類句子」的
這裏是我的過載碼
class Sentence; //forward declaration
Sentence Word::operator+(const Sentence &sentence) const{
Sentence *s = new Sentence(sentence.getCopy()); //make a new sentence that's a copy of the parameter
Word *w = new Word;
Sentence::node *l = new Sentence::node; //make new linked list node
(*(l->w)) = (*w); //Set word of node
l->next = (*s).getFirs(); // set new node to point to first node of the sentence object
(*s).setFirs(l); // point first pointer to the new node
return *s;
}
我也嘗試過載的一個單獨的方法看起來很喜歡的班級以外的運營商
Sentence operator+(const Word &word, const Sentence &sentence);
其中導致錯誤,說它被定義多次
你試圖返回時只能向前聲明的類型。假設你是編譯器,用戶說將來會有Sentance類,所以你只知道那一件事,然後他試圖返回它的實例。你真的不知道大小是多少,所以臨時分配多少空間等等。您將不得不拆分此代碼,以便操作員+位於可以看到句子和詞的定義的位置。 – Creris 2014-10-19 18:11:18
在此類以外定義此操作員是可行的方法,可能需要朋友聲明或實用程序功能。爲什麼它不起作用?我不知道,你一定犯了一個錯誤,但是不看代碼就說不出來(當然這只是一個簡單的例子)。 – 2014-10-19 18:14:52
您似乎已經發布了幾天的相同代碼,但仍未解決將「Word」和「Sentence」的類定義放在哪裏的基本問題。首先解決這個問題,然後所有其他問題都會消失。 – 2014-10-19 21:36:23