[英]How to declare a fixed size for an array in C++
快速而愚蠢的问题。 如果我不允许使用全局变量,如何声明数组的大小?
假设我有Album.h
文件:
class Album {
private:
Song songs[MAX_SONGS];
//...
}
我在哪里放MAX_SONGS = 30
? const int MAX_SONGS = 30
被认为是变量对吗? 请注意,整个程序应该知道大小。
class Album {
private:
static const int MAX_SONGS = 100;
Song songs[MAX_SONGS];
//...
};
请注意,静态const变量的内联初始化仅允许类型为整数的那些。 另请注意,无论初始化如何,这仍然只是一个声明而不是定义。 您通常不需要这个定义,尽管在某些情况下您会这样做。
至于可见性,您可以提供一个返回MAX_SONGS的静态getter函数。
public:
static int GetMaxSongs() { return MAX_SONGS; }
const int MAX_SONGS = 30
被认为是变量对吗?
是的, MAX_SONGS
是一个变量,但它是一个常量变量。 它无法改变。
并非全局变量是不可取的,如果可以避免的话,全局可变状态是不可取的。 这里没有可变状态: MAX_SONGS
无法改变。
要避免static
使用,请使用enum
:
class Album {
private:
enum { MAX_SONGS = 30 };
Song songs[MAX_SONGS];
//...
}
您也可以使用#define
预处理程序命令。
在Album.h中
#define MAX_SONGS 30
在Album.cpp中
#include "Album.h"
class Album {
private:
Song songs[MAX_SONGS];
//...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.