簡體   English   中英

無法從'std :: vector <_Ty>'轉換為'std :: vector <_Ty>&

[英]cannot convert from 'std::vector<_Ty>' to 'std::vector<_Ty> &

嗨,我有兩個問題:

  1. cannot convert from 'std::vector<_Ty>' to 'std::vector<_Ty> &

     void CMapObjectPropertyPageAmbience::OnUpdateUI(CProperty* pProperty) { prt::PropertyAmbienceStringToData(pProperty, &m_propertyAmbience); std::vector<CFilename>& rSoundFileNameVector = m_propertyAmbience.AmbienceSoundVector; for (DWORD dwIndex = 0; dwIndex < rSoundFileNameVector.size(); ++dwIndex) { m_ctrlSoundFileList.InsertString(dwIndex, rSoundFileNameVector[dwIndex].c_str()); } m_ctrlPlayType.SelectString(-1, m_propertyAmbience.strPlayType.c_str()); SetDialogFloatText(GetSafeHwnd(), IDC_MAP_OBJECT_PROPERTY_AMBIENCE_INTERVAL, m_propertyAmbience.fPlayInterval); SetDialogFloatText(GetSafeHwnd(), IDC_MAP_OBJECT_PROPERTY_AMBIENCE_INTERVAL_VARIATION, m_propertyAmbience.fPlayIntervalVariation); SetDialogFloatText(GetSafeHwnd(), IDC_MAP_OBJECT_PROPERTY_AMBIENCE_MAX_VOLUME_AREA_PERCENTAGE, m_propertyAmbience.fMaxVolumeAreaPercentage * 100.0f); OnUpdatePropertyData(m_propertyAmbience.strName.c_str()); OnChangePlayType(); } 

    錯誤出現在:

     std::vector<CFilename>& rSoundFileNameVector = m_propertyAmbience.AmbienceSoundVector; 
  2. 2個重載都不能轉換所有參數類型:

     void CMapObjectPropertyPageAmbience::OnDeleteSoundFile() { DWORD dwCurSel = DWORD(m_ctrlSoundFileList.GetCurSel()); if (dwCurSel >= m_propertyAmbience.AmbienceSoundVector.size()) return; DeleteVectorItem < CFilename > ( & m_propertyAmbience.AmbienceSoundVector, dwCurSel); m_ctrlSoundFileList.DeleteString(dwCurSel); } 

    DeleteVectorItem<CFilename>(&m_propertyAmbience.AmbienceSoundVector, dwCurSel);

完全錯誤

1>Dialog\MapObjectPropertyPageAmbience.cpp(78): error C2440: 'initializing' : cannot convert from 'std::vector<_Ty>' to 'std::vector<_Ty> &'
1>          with
1>          [
1>              _Ty=std::string
1>          ]
1>          and
1>          [
1>              _Ty=CFilename
1>          ]
1>Dialog\MapObjectPropertyPageAmbience.cpp(205): error C2665: 'DeleteVectorItem' : none of the 2 overloads could convert all the argument types
1>          d:\dev\kraizy\novaline\srcs\client\eterpack\../eterBase/Stl.h(146): could be 'void DeleteVectorItem<CFilename>(std::vector<_Ty> *,unsigned long)'
1>          with
1>          [
1>              _Ty=CFilename
1>          ]
1>          d:\dev\kraizy\novaline\srcs\client\eterpack\../eterBase/Stl.h(191): or       'void DeleteVectorItem<CFilename>(std::vector<_Ty> *,T)'
1>          with
1>          [
1>              _Ty=CFilename,
1>              T=CFilename
1>          ]
1>          while trying to match the argument list '(std::vector<_Ty> *, DWORD)'
1>          with
1>          [
1>              _Ty=std::string
1>          ]

您試圖在需要vector<CFilename>地方使用vector<string> 這些是完全無關的類型。

暫無
暫無

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

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