在C ++中,我们如何在类中定义一个静态const来计算类成员变量的大小?

时间:2016-11-20 20:51:25

标签: c++ visual-studio-2015

不编译:

class A
{
    int m_x;
public:
    static const int SIZE = sizeof(m_x);
};

我希望A::SIZE等于成员变量m_x的大小。我们怎么做呢?

我正在使用Visual Studio 2015.这是错误:

1>c:\users\markk\documents\visual studio 2015\projects\b\b.cpp(10): error C2327: 'A::m_x': is not a type name, static, or enumerator
1>c:\users\markk\documents\visual studio 2015\projects\b\b.cpp(10): error C2065: 'm_x': undeclared identifier

编译命令行:

/Yu"stdafx.h" /GS /W3 /Zc:wchar_t /ZI /Gm /Od /sdl /Fd"x64\Debug\vc140.pdb" /Zc:inline /fp:precise /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /MDd /Fa"x64\Debug\" /EHsc /nologo /Fo"x64\Debug\" /Fp"x64\Debug\b.pch" 

编辑1

感谢Stargateur。稍作改动,它也适用于VS2015:

class A
{
    int m_x;
public:
    static const int SIZE;
};

const int A::SIZE = sizeof(A::m_x);

比我想象的更容易。

1 个答案:

答案 0 :(得分:1)

请阅读doc

foo.h中

#include <cstddef>

class Foo
{
private:
    int bar;
public:
    static size_t const foo;
};

Foo.cpp中

#include "foo.h"

size_t const Foo::foo = sizeof(Foo::bar);