class XXX
{
...
public:
operator int(){}
operator char(){}
operator float(){}
}
在这里, operator前不能指明任何返回类型.

解决方案 »

  1.   

    to:chehw(chehw):
    我把operator前的返回类型去掉了,可结果是这样的:------------------Configuration: Chp1104 - Win32 Debug--------------------
    Compiling...
    AnyData.cpp
    Linking...
    Chp1104View.obj : error LNK2005: "public: __thiscall Storage::Storage(void)" (??0Storage@@QAE@XZ) already defined in AnyData.obj
    Chp1104View.obj : error LNK2005: "public: virtual __thiscall Storage::~Storage(void)" (??1Storage@@UAE@XZ) already defined in AnyData.obj
    Storage.obj : error LNK2005: "public: __thiscall Storage::Storage(void)" (??0Storage@@QAE@XZ) already defined in AnyData.obj
    Storage.obj : error LNK2005: "public: virtual __thiscall Storage::~Storage(void)" (??1Storage@@UAE@XZ) already defined in AnyData.obj
    StorageChar.obj : error LNK2005: "public: __thiscall Storage::Storage(void)" (??0Storage@@QAE@XZ) already defined in AnyData.obj
    StorageChar.obj : error LNK2005: "public: virtual __thiscall Storage::~Storage(void)" (??1Storage@@UAE@XZ) already defined in AnyData.obj
    StorageChar.obj : error LNK2005: "public: __thiscall StorageChar::StorageChar(void)" (??0StorageChar@@QAE@XZ) already defined in AnyData.obj
    StorageChar.obj : error LNK2005: "public: virtual __thiscall StorageChar::~StorageChar(void)" (??1StorageChar@@UAE@XZ) already defined in AnyData.obj
    StorageChar.obj : error LNK2005: "public: virtual void __thiscall StorageChar::Assign(char *)" (?Assign@StorageChar@@UAEXPAD@Z) already defined in AnyData.obj
    StorageChar.obj : error LNK2005: "public: virtual void __thiscall StorageChar::CopyData(char *)" (?CopyData@StorageChar@@UAEXPAD@Z) already defined in AnyData.obj
    StorageFloat.obj : error LNK2005: "public: __thiscall Storage::Storage(void)" (??0Storage@@QAE@XZ) already defined in AnyData.obj
    StorageFloat.obj : error LNK2005: "public: virtual __thiscall Storage::~Storage(void)" (??1Storage@@UAE@XZ) already defined in AnyData.obj
    StorageFloat.obj : error LNK2005: "public: __thiscall StorageFloat::StorageFloat(void)" (??0StorageFloat@@QAE@XZ) already defined in AnyData.obj
    StorageFloat.obj : error LNK2005: "public: virtual __thiscall StorageFloat::~StorageFloat(void)" (??1StorageFloat@@UAE@XZ) already defined in AnyData.obj
    StorageFloat.obj : error LNK2005: "public: virtual void __thiscall StorageFloat::Assign(char *)" (?Assign@StorageFloat@@UAEXPAD@Z) already defined in AnyData.obj
    StorageFloat.obj : error LNK2005: "public: virtual void __thiscall StorageFloat::CopyData(char *)" (?CopyData@StorageFloat@@UAEXPAD@Z) already defined in AnyData.obj
    StorageInt.obj : error LNK2005: "public: __thiscall Storage::Storage(void)" (??0Storage@@QAE@XZ) already defined in AnyData.obj
    StorageInt.obj : error LNK2005: "public: virtual __thiscall Storage::~Storage(void)" (??1Storage@@UAE@XZ) already defined in AnyData.obj
    StorageInt.obj : error LNK2005: "public: __thiscall StorageInt::StorageInt(void)" (??0StorageInt@@QAE@XZ) already defined in AnyData.obj
    StorageInt.obj : error LNK2005: "public: virtual __thiscall StorageInt::~StorageInt(void)" (??1StorageInt@@UAE@XZ) already defined in AnyData.obj
    StorageInt.obj : error LNK2005: "public: virtual void __thiscall StorageInt::Assign(char *)" (?Assign@StorageInt@@UAEXPAD@Z) already defined in AnyData.obj
    StorageInt.obj : error LNK2005: "public: virtual void __thiscall StorageInt::CopyData(char *)" (?CopyData@StorageInt@@UAEXPAD@Z) already defined in AnyData.obj
    Debug/Chp1104.exe : fatal error LNK1169: one or more multiply defined symbols found
    Error executing link.exe.
    Creating browse info file...Chp1104.exe - 23 error(s), 0 warning(s)
      

  2.   

    StorageChar、StorageInt、StorageFloat是什么类型?是自个定义的吗?
    可能是Char -> StorageChar 、int -> StorageInt、float -> StorageFloat
    不能隐式转换.
      

  3.   

    我不清楚,我的AnyData.ccp的实现在代码如下:// AnyData.cpp: implementation of the AnyData class.
    //
    //////////////////////////////////////////////////////////////////////#include "stdafx.h"
    #include "Chp1104.h"
    #include "AnyData.h"//#include "Storage.h"
    #include "StorageInt.h"
    #include "StorageChar.h"
    #include "StorageFloat.h"#ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endif//////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////AnyData::AnyData()
    {
     m_pStor = NULL;
    }AnyData::~AnyData()
    {
    delete m_pStor;
    }
    void AnyData::operator =(int iData)
    {
    delete m_pStor;
    m_pStor=new StorageInt;
    m_pStor->Assign((char*)&iData);
    }
    void AnyData::operator =(char chData)
    {
    delete m_pStor;
    m_pStor=new StorageChar;
    m_pStor->Assign((char*)&chData);
    }
    void AnyData::operator =(float fData)
    {
    delete m_pStor;
    m_pStor = new StorageFloat;
    m_pStor->Assign ((char*)&fData);
    }
    AnyData::operator int()
    {
    int iTemp = 0;
    if (m_pStor != NULL)
    m_pStor->CopyData((char*)&iTemp);
    return iTemp;
    }
    AnyData::operator char()
    {
    char chTemp = 0;
    if(m_pStor != NULL)
    m_pStor->CopyData((char*)&chTemp);
    return chTemp;
    }
    AnyData::operator float()
    {
    float fTemp = 0;
    if (m_pStor != NULL)
    m_pStor->CopyData((char*)&fTemp);
    return fTemp;
    }
      

  4.   

    //class XXX
    //{
    //...
    //public:
    //operator int(){}
    //operator char(){}
    //operator float(){}
    //}
    //在这里, operator前不能指明任何返回类型.
    这段代码要有返回类型。你以前那段代码是对的。
    你打开StorageInt.h看一下这个StorageInt类有没有int -> StorageInt类型
    的拷贝函数。如果没有,你得显式转换才行
      

  5.   

    你重载operator=没有返回值,怎么用?
    难道"="号的左边没有东西?这样“=xxx;”用,能行么?
      

  6.   

    谢谢大家,我的问题解决了。
    其实我的代码是没错,错误在于我把应该放在StorageInt.cpp的实现在我代码放在了Storage.h内,真是惭愧!!
    再次感谢大家!!每人都有酬谢!!!