如何在头文件中创建静态数组?我查看了stackoverflow上的一些示例,但无法让它们工作。
谢谢!
#ifndef DRUMKITLIBRARY_H_
#define DRUMKITLIBRARY_H_
class DrumKitLibrary
{
public:
static const char* const list[] = {"zip", "zam", "bam"};
};
#endif /* DRUMKITLIBRARY_H_ */
答案 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)
你没有。
您在标题中声明它并在源中定义它。