Initialisierung von Struct mit CString



  • Das wird problemlos kompiliert:

    struct structInfo{
    int num1;
    int num2;
    int num3;
    int num4;
    _TCHAR name1[260];
    _TCHAR name2[260];
    _TCHAR name3[260];
    };

    static struct structInfo myGlobalInfos[] =
    {
    {1 , 2, 3, 4, _T("text1"), _T("text2"), _T("text3")},
    {4 ,5, 6, 7, _T("text4"), _T("text5"), _T("text6")},
    {8 ,15, 56, 97, _T("text7"), _T("text8"), _T("text9")}

    };

    ---------------------TCHAR name3[260] --> CString name3----------

    struct structInfo{
    int num1;
    int num2;
    int num3;
    int num4;
    _TCHAR name1[260];
    _TCHAR name2[260];
    CString name3;
    };
    Das wird auch von VC 8.0.50 problemlos kompiliert.

    VC 7.0.9466 gibt allerdings folgende Fehlermeldung aus:

    error C2440: 'initializing' : cannot convert from 'int' to 'structInfo
    No constructor could take the source type, or constructor overload resolution was ambiguous

    Weißt jemand warum?

    Danke im voraus


  • Mod

    Ein TCHAR* oder Array ist eben kein String und implizite Konvertierungen sind hier nicht erlaubt.

    Mach es so (wenn es sein muss)...

    ...
    {8 ,15, 56, 97, _T("text7"), _T("text8"), CString(_T("text9")) }
    ...

    Warum willst Du hier einen CString?



  • Martin Richter schrieb:

    Ein TCHAR* oder Array ist eben kein String und implizite Konvertierungen sind hier nicht erlaubt.

    Mach es so (wenn es sein muss)...

    ...
    {8 ,15, 56, 97, _T("text7"), _T("text8"), CString(_T("text9")) }
    ...

    Warum willst Du hier einen CString?

    1)Leider die gleiche Fehlermeldung unter VC 7.0! (Unter VC8.0 OK)
    error C2440: 'initializing' : cannot convert from 'int' to 'structInfo

    1. Auf (CString name3) greifen viele Funktionen zu und das läuft auch unter VC 8. Eine Typumwandlung in _TCHAR bringt viele Umsellungen mit sich. Ich brauche es leider auch unter VC7.0!

    PS: Die oben geziegte Struct ist lediglich ein vereinfachtes Beispiel von der Struct was ich tatsächlich einsetzen muss.


Anmelden zum Antworten