none
请问e:\vc98\include\util.h(48) : error C2872: 'CSession' : ambiguous symbol这个错误怎么改呢? RRS feed

  • 问题

  • e:\vc98\include\util.h(48) : error C2872: 'CSession' : ambiguous symbol这个错误怎么改呢?头文件是
    #include "brtest.h"
    #include <string.h>
    #include "util.h"
    因为util.h与session.h文件中#include "brtest.h"和#include "util.h" 是重复的,所以我将util.h中的这两个文件去掉了,问题倒是解决了,但是又出现了error C2061: syntax error : identifier 'CData'和error C2061: syntax error : identifier 'u_long'两处错误。帮忙看下吧。
    谢谢!
    2009年10月10日 3:36

答案

全部回复

  • 把两个CSession放到不同的名称空间里面去

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年10月11日 20:22
    版主
  • 谢谢您,我把头文件brtest.h中的CSession定义删掉了。问题解决了,但是又有新问题出现了。

    • 已标记为答案 anmy 2009年10月12日 3:08
    • 取消答案标记 anmy 2009年10月12日 3:22
    2009年10月12日 1:51
  • #include "brtest.h"
    这个文件里是对类进行声明,避免头文件嵌套包含,保留这一行
    2009年10月12日 2:56
  • 看起来你混合了两个版本的文件。把包含文件中的路径重新设一下,vc6cn的目录去掉
    顺便说一下,不知道你为什么会有两个目录。VC6没有中文版。


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年10月12日 3:09
    版主
  • 谢谢,估计是引入了多个命名空间,这些空间中的CSession有一个以上的定义,所以引发歧义,所以我把其中的一个空间中的CSession申明删了。后来发现删掉这个办法不可取。新问题出现的原因与删掉申明是有关系的。
    2009年10月12日 3:14
  • 谢谢您,我也不知道,我装了个中文版的,路径里没有对session.h重复的,还有没有其他解决办法了?

    brtest.h 中的头文件是
    #include <afxwin.h>
    #include <afxdlgs.h>
    #include <afxcview.h>
    #include <winsock2.h>

    session.h中的头文件是:
    #include "brtest.h"
    #include "util.h"

    util.h中的头文件是
    #include "brtest.h"
    #include <string.h>
    #include "util.h
    而现在错误出现在util.h 中的
    class CUtil
    {
        // P U B L I C

        public :
       
            static INT BandwidthThrottledSend (CSession   &session,
                                               CData      &data,
                                               DWORD      &cBytesSentToNow,
                                               DWORD      &dwFirstSendTick,
                                               DWORD      &dwLastSendTick,
                                               DWORD      dwBitsPerSec,
                                               HANDLE     hAbortEvent = NULL)
    我看路径里也没有对session.h 重复。那是怎么回事了?谢谢了!

    2009年10月12日 6:56
  • brtest.h 中的头文件是
    #include <afxwin.h>
    #include <afxdlgs.h>
    #include <afxcview.h>
    #include <winsock2.h>

    session.h中的头文件是:
    #include "brtest.h"
    #include "util.h"

    util.h中的头文件是
    #include "brtest.h"
    #include <string.h>
    #include "util.h
    而现在错误出现在util.h 中的
    class CUtil
    {
        // P U B L I C

        public :
       
            static INT BandwidthThrottledSend (CSession   &session,
                                               CData      &data,
                                               DWORD      &cBytesSentToNow,
                                               DWORD      &dwFirstSendTick,
                                               DWORD      &dwLastSendTick,
                                               DWORD      dwBitsPerSec,
                                               HANDLE     hAbortEvent = NULL)
    我看路径里也没有对session.h 重复。那是怎么回事了?

     

    2009年10月12日 7:05
  • VC6没有中文版。VC.Net开始才有。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年10月12日 12:27
    版主
  • 问题还是出现在类名有重复。

    • 已标记为答案 anmy 2009年10月13日 6:45
    2009年10月13日 6:45