簡體   English   中英

如何解決VC ++ 9中的編譯錯誤“無法將const轉換為引用”

[英]How to resolve compilation error “cannot convert const to reference” in VC++9

我正在從事從VC6到VC9的遷移項目。 在VC9(Visual Studio 2008)中,將const成員傳遞給接受引用的方法時出現編譯錯誤。 在VC6中正在編譯它而沒有錯誤。

示例程序:

class A
{
};

typedef CList<A, A&> CAlist;

class B
{
    CAlist m_Alist;

public:
    const B& operator=( const B& Src);
};

const B& B::operator=( const B& Src)
{
    POSITION pos = Src.m_Alist.GetHeadPosition();

    while( pos != NULL)
    {
        **m_Alist.AddTail( Src.m_Alist.GetNext(pos) );**
    }

    return *this;
}

錯誤:編譯以上程序時,出現錯誤

錯誤C2664:'POSITION CList :: AddTail(ARG_TYPE)':無法將參數1從'const A'轉換為'A&'

請幫助我解決此錯誤。

這是因為GetNext()方法返回類A的臨時對象,並且函數AddTail接受參數A& 由於無法將臨時對象綁定到非常量引用,因此會出現錯誤。 解決它的最簡單方法是將其分為兩個語句。 例如:

    while( pos != NULL)
    {
        A a =  Src.m_Alist.GetNext(pos);
        m_Alist.AddTail(a);
    }

暫無
暫無

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

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