关于C+中sizeof(class)用法引发的错误+; < >我在C++中编译我的项目时,MSVC:引发了以下错误
错误#94:数组的大小必须大于零 在执行sizeof时,在以下行中抛出错误:关于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 ) {}
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,则它们将获得相同的地址)。错误是否正好在这一行抛出?