关于c++中使用sizeof(class)抛出的错误
Regarding error thrown by sizeof(class) usage in C++
当我用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的定义,也就是说你必须#包含它的头文件
相关文章:
- 错误:"Left of getValue must have class/struct/union"
- 当初始值设定项是基类名时'initializer does not name a non-static data member or base class'错误
- unordered_set .find 方法无法编译的 C++ "expression must have class type"错误
- C++错误:"class name"之前的预期类型说明符
- 错误:'class std::unique_ptr<std::set<long unsigned int> >'没有名为 'size' 的成员
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 获取生成错误:错误 C2011:'ProfileSettings':'class'类型重定义
- 错误 LNK2001:未解析的外部符号"private: static class Game Game::game_"
- C++编译错误:重新定义'class::class'
- VS2017模板专用化错误无法从'Class *(__cdecl *)(Args...)'转换为'Class *(__cdecl *)(Args...)'
- 在 C++ 中对"Class::function()"错误的未定义引用 [CLion IDE]
- 调用 list.size() 方法给出错误"expression must have class type"
- C++ 中的"this declaration has no storage class or type specifier"错误
- 将数据添加到 CArray 会产生错误"cannot access private member declared in class 'CObject'"
- 如何修复派生类给出错误'declaration has no storage class or type specifier'?
- 为什么我会收到"Expression must have a class type"错误?(C++)
- 让编译器告诉哪些方法不具体,而不是错误'invalid new-expression of abstract class type'
- 共享库中非模板基的模板子类导致未定义的符号类型信息'class'链接错误
- 如何修复编译器错误"class has no member named X"?
- 直接显示过滤器错误"Class is not registered"