常数成员

时间:2010-05-06 08:53:10

标签: c++ static constants structure

我在某个标题中定义了结构(D3DXVECTOR3)

我如何声明:

  1. 该类型的静态成员并初始化它?
  2. 也许是该类型的常量成员并初始化它?
  3. 当我使用一些构造函数时我得到的错误只有整数可以初始化。

4 个答案:

答案 0 :(得分:1)

使用initializer list初始化const成员。

例如

struct demo
{

    const int x;

    demo():x(10)
    {
        //some code
    }

};

就初始化静态成员(类内)而言(只有在const-static整数时才可以在类中初始化它们)

For example

struct abc{

     static const int k=10; //fine
     static int p=10; //Invalid
     static const double r =2.3 //Invalid
      // ......

   };

  const int abc::k ; //Definition

答案 1 :(得分:1)

您不能只修改已存在的结构。这将是一次重新定义。不好玩的东西。

你可以像TGadfly建议一样包装它。

答案 2 :(得分:1)

要拥有非int类型的静态成员,请使用以下构造:

class foo {
    // Declarations:
    static Type1 field1; // or
    static Type2 const field1;
};

// Definitions and initializations:
Type1 foo::field1 = value1;
Type2 const foo::field2 = value2;

答案 3 :(得分:0)

在头文件中我声明了

class Bar_class
{
  static const D3DXVECTOR3 foo;
}

在cpp文件中我写了

const D3DXVECTOR3 Bar_class::foo =D3DXVECTOR3 (1,1,1);