Конфликты объявлений в статической библиотеке win32 в visual studio 2017
Я пытаюсь построить устаревший статический lib-проект Win32. он добавил свой собственный класс CString и CFile. они предназначены для того, чтобы избежать прямого использования библиотеки MFC, но допускают одни и те же перегрузки оператора. поэтому, когда я компилирую этот проект, он выдает сообщение об ошибке:
Severity Code Description Project File Line Suppression State Error C2666 'CString::operator +': 2 overloads have similar conversions diffengine c:\demo_temp\diffengine\filepartition.cpp 443
ошибка указывает на второй знак плюс +:
for (i=0; i<nbFiles; i++) AddString( szIndent + " " + arrFiles.GetAt(i) );
поэтому я думаю, что мой проект статической библиотеки win32 настроен на использование MFC где-то, но я выбрал использовать стандартные библиотеки windows уже на странице свойств проекта.
может ли кто-нибудь сказать мне, как устранить эти конфликты деклараций?
миллион раз спасибо!
Что я уже пробовал:
Я создаю новый пустой проект статической библиотеки win32, а затем добавляю эти файлы из устаревшего проекта. эти сообщения об ошибках выдаются.
Richard MacCutchan
Пожалуйста, покажите код для вашего класса CString, который имеет перегрузки.
Southmountain
Я скопировал перегруженный оператор здесь:
class CString { // Members protected: char *m_str; // Constructor/Destructor public: CString() { m_str = NULL; } CString(char *szInputSource) { m_str = NULL; if (szInputSource) Copy(szInputSource); } CString(const CString &szInputSource) { m_str = NULL; Copy(szInputSource.GetData()); } ~CString() { Empty(); } // Methods public: void operator +=(CString &szAdditionalString) { Append(szAdditionalString); } void operator +=(char *szAdditionalString) { Append(szAdditionalString); } void operator +=(char sAdditionalChar) { Append(sAdditionalChar); } CString operator +(CString &szAdditionalString) { CString szTemp = *this; szTemp.Append(szAdditionalString); return szTemp; } CString operator +(char *szAdditionalString) { CString szTemp = *this; szTemp.Append(szAdditionalString); return szTemp; } CString operator +(char sAdditionalChar) { CString szTemp = *this; szTemp.Append(sAdditionalChar); return szTemp; } // binary + operator (global, with const parameters) friend CString operator+(const CString &sz1, const CString &sz2) { CString s = sz1; s += (CString&)sz2; return s; } friend CString operator+(CString &sz1, const char sz2) { CString s = sz1; s += (char)sz2; return s; } friend CString operator+(const char *sz1, CString &sz2) { CString s = (char*)sz1; s += sz2; return s; }