簡體   English   中英

沒有可行的從'Foo'到'Foo * const'C ++的轉換

[英]No viable conversion from 'Foo' to 'Foo *const' C++

我有一個用C ++實現圖形(模板類)的類(我沒有做到這一點),基本上我想要做的是表示Places(它們是我的頂點)和我的邊緣(那個鏈接他們)是距離(英里)。

我宣布了一個簡單的Graph<Places *, double> places; 現在我正在創建一個方法來檢查圖中是否已存在某個Place以避免重復。 我的圖有一個方法Vertice<TV,TR>* findvert_content(const TV& v) const; 返回它找到的頂點的指針(所以如果返回指針有效,我假設它存在於圖中)。 現在我想在我的Test類中執行此操作:

bool Test::verifiesName(Place *place) { 
    Vertice<Place *, double> find_place = places.findvert_content(*place);
    ...
}

問題是它給了我一個語義問題:“從'Place'到'Place * const'沒有可行的轉換”,我不知道該怎么做。

這是我的findvert方法的代碼(供參考):

template<class TV,class TR>
Vertice<TV,TR>* Graph<TV,TR>::findvert_content(const TV& v) const
{
    Vertice<TV,TR>* ap=graf;

    while (ap != NULL)
    {
        if (ap->vcontent == v)
            return ap ;
        else 
            ap=ap->apvertice;
    }
    return ap;
}

PS graf只是我的Graph類中的一個屬性: Vertice<TV,TR>* graf;

*placeplace所指地址的值。 在調用方法時,您確定要傳遞值而不是指針本身嗎? 喜歡:

Vertice<Place *, double> find_place = places.findvert_content(place);

另外,如果你沒有在方法中修改v ,為什么還需要&? 然后宣布

template<class TV,class TR>
Vertice<TV,TR>* Graph<TV,TR>::findvert_content(const TV v) const

它應與上述呼叫兼容。

TV在你的類型places成員需要一個指向一個Place

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM