关于c++中使用sizeof(class)抛出的错误

Regarding error thrown by sizeof(class) usage in C++

本文关键字:错误 class c++ sizeof 关于      更新时间:2023-10-16

当我用c++编译我的项目时,MSVC抛出以下错误:

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

在下一行执行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_t error = sizeof(MyClass);

注意,以后是否完全定义类并不重要:定义必须在sizeof之前。

这个错误很可能是由前向声明引起的。在你使用sizeof的那一行,编译器需要知道你的类MyClass的定义,也就是说你必须#包含它的头文件

相关文章: