情况说明:我现在在改写一个老师的代码,发现一个问题,这是一个MFC工程,我想在其中利用vector
          于是#include<vector>
但是这样会产生很多编译错误,难道MFC库和标准c++库有冲突?

解决方案 »

  1.   

    using namespace std;
    vector 是定义在std名字空间的容器模板类,需要使用std;
    同样iostream ,string ,bitset 这些头文件也是需要声明一下名字控件
      

  2.   


    是在vs2005下,不过用的是 intel 编译器
    至于错误,都是些 类型错误
      

  3.   

    需要指定使用哪里的string
    多字节和宽字节也得注意一下
      

  4.   

    多谢楼上各位啊,没想到 csdn这么火爆.....这么多热心人
    我马上贴错误和代码
      

  5.   

    你把#include<vector>放在stdafx.h中试试
      

  6.   

    因为工程很大 我贴出修改的地方
    #include <vector>
    using namespace std;

    #if !defined(AFX_CLIENTSOCKET_H__6DB130BE_1C05_4B7F_BD57_81BF1AD0F351__INCLUDED_)
    #define AFX_CLIENTSOCKET_H__6DB130BE_1C05_4B7F_BD57_81BF1AD0F351__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000/////////////////////////////////////////////////////////////////////////////
    // CClientSocket command target class  AFX_EXT_CLASS CClientSocket 
    {
    public:
    CClientSocket(SOCKET hSocket = INVALID_SOCKET);
    virtual ~CClientSocket();
    //读写数据,返回实际读写的字节数 public:
     BOOL Create();
     public:
     int ReadData(char*& pBuffer, int bufsize);
     SOCKET Detatch();
     void Attach(SOCKET hSock);
     BOOL CreateListenSocket(int nPort);
     int Write(const void *pData,  int nLen);
     int WriteData(const void *pData,  int nLen);  int Read(void *pData, int nLen);
     SOCKET FromHandle();
     SOCKET Accept();
     BOOL Connect(LPCTSTR lpszHostAddress, UINT nHostPort );
     void Close();
         int m_nPort;
         SOCKET m_hSocket;
     vector<int> temp;
     protected:
     private:
     int SetIntOption(int level, int optname, int val);
     BOOL InitializeSocket(int nPort);
     DWORD IniSOCKDLL();
    };/////////////////////////////////////////////////////////////////////////////
     
    /////////////////////////////////////////////////////////////////////////////
    template<class T>
    BOOL RawRead(CClientSocket& rSocket, T& data)
    {
    return (rSocket.Read (&data, sizeof(T)) == sizeof(T));
    }template<class T>
    BOOL RawWrite(CClientSocket& rSocket, const T& data)
    {
    return (rSocket.Write (&data, sizeof(T)) == sizeof(T));
    }/////////////////////////////////////////////////////////////////////////////
    //{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_LISTENSOCKET_H__6DB130BE_1C05_4B7F_BD57_81BF1AD0F351__INCLUDED_)这是部分代码
      

  7.   

    错误如下d:\Program Files\Microsoft Visual Studio 8\VC\include\yvals.h(499): error: invalid redeclaration of type name "VT_TYPE" (declared at line 40 of "D:\GZFM2005\PdemClientStub\NetFileShare.h")
    2>  typedef _ULONGLONG _ULonglong;
    2>          ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\eh.h(55): error: expected a ")"
    2>  typedef void (__cdecl *_se_translator_function)(unsigned int, struct _EXCEPTION_POINTERS*);
    2>                                                  ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\eh.h(55): error: expected an identifier
    2>  typedef void (__cdecl *_se_translator_function)(unsigned int, struct _EXCEPTION_POINTERS*);
    2>                                                              ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\eh.h(55): error: expected an identifier
    2>  typedef void (__cdecl *_se_translator_function)(unsigned int, struct _EXCEPTION_POINTERS*);
    2>                                                                                           ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\iosfwd(499): error: type name is not allowed
    2>   return ((unsigned char)_Ch);
    2>            ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\iosfwd(499): error: expected a ")"
    2>   return ((unsigned char)_Ch);
    2>            ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\iosfwd(499): error: expected a ")"
    2>   return ((unsigned char)_Ch);
    2>            ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\iosfwd(499): error: expected an identifier
    2>   return ((unsigned char)_Ch);
    2>                         ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: declaration is incompatible with "void __cdecl std::_Debug_message(const char *, const char *)" (declared at line 59)
    2>  _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);
    2>                                                 ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: variable "std::_Debug_message" may not be initialized
    2>  _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);
    2>                                                 ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: type name is not allowed
    2>  _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);
    2>                                                                ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: expected an expression
    2>  _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);
    2>                                                                               ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: expected a ")"
    2>  _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);
    2>                                                                               ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: incomplete type is not allowed
    2>  _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);
    2>                                                 ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(66): error: expected a ";"
    2>  _MRTIMP2_NCEEPURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *, const wchar_t *, unsigned int line);
    2>                                                                                                                   ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(241): error: expected a ")"
    2>   const wchar_t *_Where, unsigned int _Line)
    2>                          ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(241): error: expected a ";"
    2>   const wchar_t *_Where, unsigned int _Line)
    2>                                            ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(440): error: not a class or struct name
    2>   : public input_iterator_tag
    2>            ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(632): error: expected a ">"
    2>  template<> struct iterator_traits<unsigned char>
    2>                                    ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(632): error: expected an identifier
    2>  template<> struct iterator_traits<unsigned char>
    2>                                                 ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(633): error: expected a ";"
    2>   { // get traits from integer type
    2>   ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(664): error: expected a ">"
    2>  template<> struct iterator_traits<unsigned short>
    2>                                    ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(664): error: expected an identifier
    2>  template<> struct iterator_traits<unsigned short>
    2>                                                  ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(665): error: expected a ";"
    2>   { // get traits from integer type
    2>   ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(684): error: expected a ">"
    2>  template<> struct iterator_traits<unsigned int>
    2>                                    ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(684): error: expected an identifier
    2>  template<> struct iterator_traits<unsigned int>
    2>                                                ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(685): error: expected a ";"
    2>   { // get traits from integer type
    2>   ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(704): error: expected a ">"
    2>  template<> struct iterator_traits<unsigned long>
    2>                                    ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(704): error: expected an identifier
    2>  template<> struct iterator_traits<unsigned long>
    2>                                                 ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(705): error: expected a ";"
    2>   { // get traits from integer type
    2>   ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(745): error: expected a ">"
    2>  template<> struct iterator_traits<_ULONGLONG>
    2>                                    ^
    2>
    2>d:\Program Files\Microsoft Visual Studio 8\VC\include\xutility(745): error: expected an identifier
    2>  template<> struct iterator_traits<_ULONGLONG>
      

  8.   

    不包含<vector>的时候会编译成功吗?