我正在使用不同的類和對象來關聯這些不同的類。現在,我想寫一個單獨的函數,用於將兩個矢量連接到另一個矢量。我應該在哪裏寫這些類型的獨立函數。我可以使用一個新的頭文件嗎?實際上,我做了一個新的頭文件(ConnectedSegment.h),並把它放在我的功能下。但是,我得到了這個錯誤。如何在沒有對象的情況下編寫和調用函數當我們不想用對象調用
43 D:myex\ConnectedSegment.h non-member function `std::vector<int>& NeighboursToGivenValue(std::map<int, std::vector<int> >&, int, int)' cannot have `const' method qualifier
D:\myex\Detects\Makefile.win [Build Error] [Detects.o] Error 1
這裏是我的功能代碼:
vector<int> & NeighboursToGivenValue(map<int, vector<int> > &adjacency,
int s1, int s2) const
{
vector<int>::const_iterator any;
vector<int>::iterator is_any;
vector<int> *neighbours2both = new vector<int>;
int i;
neighbours2both->reserve(adjacency[s1].size() + adjacency[s2].size());
neighbours2both->insert(neighbours2both->end(), adjacency[s1].begin(),adjacency[s1].end());
vector<int>& neighbours2s2=adjacency[s2];
for (any=neighbours2s2.begin(); any!=neighbours2s2.end(); any++){
is_any = find (neighbours2both->begin(), neighbours2both->end(), *any);
if(is_any == neighbours2both->end()){
if(s1 != *any) neighbours2both->push_back(*any);
}
}
for (i=0; i<neighbours2both->size(); i++){
neighbours2both->erase(neighbours2both->begin() + i);
}
return(*neighbours2both);
}
在這裏,我通過使用叫做MyPoint
另一個類得到了adjacency()
值。 所以我用myxyz.adjacency()
來調整這個鄰接的值。現在我不想調用同一類MyPoint
來調用函數NeighboursToGivenValue
。所以, 你能告訴我應該在哪裏寫這個函數。或者,如果我在MyPoint
類中編寫此函數,如何在沒有該類的對象的情況下調用此函數。
請格式化您的問題,以便代碼清晰可辨。 –
@g_niro:我試着修復你的問題,但是這個語言很難理解。請再次閱讀,並嘗試修復像*這樣的句子,我應該寫這些類型的單獨函數正在寫*。 –
請使用'{}'按鈕來格式化您的代碼。只需用鼠標選擇代碼,然後按編輯器中的「{}」按鈕。如果我們無法讀取您的代碼,則很難回答您的問題。 – jalf