头文件中的静态数组 - C ++

时间:2012-11-24 18:26:35

标签: c++

如何在头文件中创建静态数组?我查看了stackoverflow上的一些示例,但无法让它们工作。

谢谢!

#ifndef DRUMKITLIBRARY_H_
#define DRUMKITLIBRARY_H_


class DrumKitLibrary
{
public:
    static const char* const list[] = {"zip", "zam", "bam"};
};

#endif /* DRUMKITLIBRARY_H_ */

2 个答案:

答案 0 :(得分:3)

您的编译器错误正在发生,因为这不是您初始化静态数据的方式(嗯,静态const积分类型可以通过这种方式初始化,但就是这样)。您只在类定义中声明静态数据,并在类之外定义它。但是,您仍然可能存在问题。

在头文件中定义静态数据的问题在于,包含该头文件的每个文件都有自己的数组副本。 在标题中声明并在实现文件中定义,可以更好地为您提供服务。

// A.h
class A {
public:
    static const char *f[];
};

// A.cpp
#include "A.h"

const char *A::f[] = { "one", "two" };

答案 1 :(得分:0)

你没有。

您在标题中声明它并在源中定义它。