Bonjour
tout d'abord, veuillez m'excuser si je n'emploie pas les bons termes pour le C++, les habitudes sont tenaces..!

J'ai un code (c++) qui se compile tres bien sous VC6 et qui me sort une erreur sous VC7 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
error C2668: 'MAPSOLEType::String::Find'*: appel ambigu à une fonction surchargée
Je ne comprends pas cette difference de comportement plateforme.

Je vous joint une partie du code, j'espere que je n'ai rien oublié pour l'analyse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class String // just an extract !
{
    friend class Buffer;
public:
// Searching (return starting index, or 0 if not found)
    // like "C" strstr
    int Find(String& s, FindFlags ff = ffNone, Long iStart = -1) const;
    int Find(LPCWSTR wsz, FindFlags ff = ffNone, Long iStart = -1) const;
    int Find(LPCSTR sz, FindFlags ff = ffNone, Long iStart = -1) const;
    // Like "C" strchr
    int Find(WCHAR wch, FindFlags ff = ffNone, Long iStart = -1) const;
    int Find(CHAR ch, FindFlags ff = ffNone, Long iStart = -1) const;
};


inline int String::Find(String& s, FindFlags ff, Long iStart) const
{
    return (Find(s.m_bs, ff, iStart));
}

inline int String::Find(LPCSTR sz, FindFlags ff, Long iStart) const
{
    return (Find(String(sz), ff, iStart)); // <----- ERROR !!!!!!!!!!!!!
}

inline int String::Find(CHAR ch, FindFlags ff, Long iStart) const
{
    return (Find(CharToWChar(ch), ff, iStart));
}
Avez vous une solution, et surtout une explication, je ne comprends vraiment pas cette erreur (VC6 est plus permissif que VC7et> ? )

merci
stephane