none
une classe qui n'est pas reconue RRS feed

  • Question

  • toujours dans ma migration vers le code managé j'ai une classe qui n'est pas reconnue :

    Je vous met la déclaration de la classe, le source et le message d'erreur :

    //---------------------------------------------------------------------------li 1
    
    #ifndef WfStreamH
    #define WfStreamH
    
    //--------------------------- INCLUDE-FILES ------------------------------------li 6
    #define endl '\n'
    namespace SpecificationLoader
    {
        using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    	using namespace System::IO;
    	using namespace System::Runtime::InteropServices;
    	using namespace msclr::interop;
    //--------------------------------------------------------------------------- Li 19
    	public ref class CWfStream
    	{ // li 21
    	public:
    		CWfStream::CWfStream();
    		CWfStream::~CWfStream();
    		static FILE* CWfStream::InitWfStream();
    		static void CWfStream::close();
    		static bool CWfStream::is_open();
    		static FILE* CWfStream::open( const wchar_t* swFileName, wchar_t* swMode, long protection);
    		static bool CWfStream::eof();
    		static unsigned long long CWfStream::getline( FILE* pFile, System::String^ sLine);
    		static unsigned long long CWfStream::writeline( FILE* pFile, System::String^ sLine);
    		static unsigned long long CWfStream::clear();
    		static unsigned long long CWfStream::seekg( int iOrigin);
    		static unsigned long long CWfStream::findln( wchar_t* sLine);
    	};
    };
    #endif
    

    la méthode qui détecte l'erreur :

    FILE* CIniFile::InitCIni( System::String^ m_sIniFileName)
    {
      //Open the INI file in the given mode and set the handle to the class variable
    	
    	const wchar_t* chars = (const wchar_t*)(Marshal::StringToHGlobalUni( m_sIniFileName)).ToPointer();
    	wchar_t* tmp = (wchar_t*)chars;
    	Marshal::FreeHGlobal( IntPtr( (void*)chars));
    	while( pFile == NULL || (int)pFile->_ptr != 0)
    		pFile = CWfStream.open( tmp, L"r+", 666);
    	if( pFile != NULL)
    		m_bIsOpen = true;
    	return( pFile);
    }

    et l'erreur détectée:

    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(166): warning C4832: jeton '.' non conforme après UDT 'SpecificationLoader::CWfStream'
    1>          D:\usr\Specification LoaderV4.1\dev\Utility\com\WfStream.h(21) : voir la déclaration de 'SpecificationLoader::CWfStream'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(166): error C2275: 'SpecificationLoader::CWfStream' : utilisation non conforme de ce type comme expression
    1>          D:\usr\Specification LoaderV4.1\dev\Utility\com\WfStream.h(21) : voir la déclaration de 'SpecificationLoader::CWfStream'


    Jean Noël Martin

    mercredi 22 juillet 2015 18:04

Réponses

  • Pour accéder à une static, c'est pas avec un "." mais avec "::".

    pFile = CWfStream::open( tmp, L"r+", 666);


    Paul Bacelar, Ex - MVP VC++

    • Marqué comme réponse JeanNoel53 mercredi 22 juillet 2015 22:25
    mercredi 22 juillet 2015 20:37
    Modérateur