关于C+中sizeof(class)用法引发的错误+; < >我在C++中编译我的项目时,MSVC:引发了以下错误

关于C+中sizeof(class)用法引发的错误+; < >我在C++中编译我的项目时,MSVC:引发了以下错误,c++,compiler-errors,sizeof,C++,Compiler Errors,Sizeof,错误#94:数组的大小必须大于零 在执行sizeof时,在以下行中抛出错误: if (sizeof (MyNamespace::MyClass) == 60) MyClass的定义如下: class MyClass: public ParentClass { public: MyClass( void *pCreate, int a, int b, bool c) : ParentClass( pCreate, a, b, c ) {}

错误#94:数组的大小必须大于零

在执行sizeof时,在以下行中抛出错误:

if (sizeof (MyNamespace::MyClass) == 60)
MyClass的定义如下:

class MyClass: public ParentClass
{
    public:
        MyClass( void *pCreate, int a, int b, bool c) :
              ParentClass( pCreate, a, b, c ) {}

        virtual inline void myFunc ( ) 
        {
            //something
        }
    private:
        virtual ~MyClass(){};

        /**
        * Copy assignment. Intentionally made private and not implemented to prohibit usage (noncopyable stereotype)
        */
        MyClass& operator=(const MyClass&);
};

谁能告诉我可能出了什么问题?即使sizeof返回零大小,为什么它是一个编译器错误?

此错误是在获取仅在该点声明的类的
sizeof
时引起的。例如,
class-MyClass;const size\u t error=sizeof(MyClass)


请注意,以后是否完全定义该类无关紧要:定义必须在
sizeof

之前。此错误很可能是由转发声明引起的。在使用sizeof的那一行,编译器需要知道类MyClass的定义,即必须包含它的头文件

父类中是否有数组?每个类的大小必须至少为字节,即使是空的,以区分它的两个成员(例如在数组中)(如果是0,则它们将获得相同的地址)。错误是否正好在这一行抛出?