C++ 在c+;中使用内部类时,不允许指向不完整类类型的指针+;

C++ 在c+;中使用内部类时,不允许指向不完整类类型的指针+;,c++,visual-studio,class,visual-c++,this,C++,Visual Studio,Class,Visual C++,This,我有一个类扫描器,其中一个设备消息声明为内部的,如图所示。这是scanner.h文件代码: #pragma once class CScanner { public: CScanner(void); class CDeviceMessage; ~CScanner(void); }; 设备消息类在其方法中出现问题。此指针有错误。它表示不允许指向不完整类类型的指针CDeviceMessage.h CDeviceMessage.h文件代码在这里,我不包括完整的代码,但包

我有一个类扫描器,其中一个设备消息声明为内部的,如图所示。这是scanner.h文件代码:

#pragma once
class CScanner
{
public:
    CScanner(void);


    class CDeviceMessage;

    ~CScanner(void);
};
设备消息类在其方法中出现问题。此指针有错误。它表示不允许指向不完整类类型的指针CDeviceMessage.h

CDeviceMessage.h文件代码在这里,我不包括完整的代码,但包括函数定义和声明,因此您可能会理解它:

#pragma once
#include "Scanner.h"


class CScanner::CDeviceMessage
{

bool MatchesOtherMessage(CScanner::CDeviceMessage * other);

};
出现错误的CDeviceMessage.cpp函数如下:

bool CScanner::CDeviceMessage::MatchesOtherMessage(CDeviceMessage *other)
{

    if (other != NULL)
            {
                if ((this->imgMessage != NULL) && (other->imgMessage != NULL))/// here it gives on this pointer error that pointer to incomplete class type is not allowed
                {
                    int timeDiff = this->imgMessage->OnlineMilliseconds
                            - this->imgMessage->OnlineMilliseconds;
                    if ((timeDiff > -20) && (timeDiff < 40))
                    {
                        return true;
                    }
                }
            }
            return false;
}
boolcscanner::CDeviceMessage::MatchesOtherMessage(CDeviceMessage*其他)
{
如果(其他!=NULL)
{
如果((this->imgMessage!=NULL)&&&(other->imgMessage!=NULL))///这里它给出了这个指针错误,不允许指向不完整类类型的指针
{
int timeDiff=this->imgMessage->online毫秒
-这->imgMessage->onlinems;
如果((时间差>-20)和&(时间差<40))
{
返回true;
}
}
}
返回false;
}

您在中的
CDeviceMessage*other
前面缺少一个
CScanner::
前缀

bool CScanner::CDeviceMessage::MatchesOtherMessage(CDeviceMessage *other)

告诉我另一件事,这一行是否有任何问题,它给出了错误:语法错误:“常量”,行是:static const int BUFFER_SIZE=518400+400//这是错误哦,你报告的原始问题解决了吗?至于你的另一个错误,我看不出你给我的那行有什么问题,但看起来你写的是“常量”而不是“常量”。