试图将'N'定义为类的字符串大小并获取错误

arg*_*nza -4 c++ oop

我试图定义"N"是字符的数目在我的课,通过把的#define N 10在我的.h文件的开头,当我这样做,我得到了很多错误,其中包括缺少的(,丢失)失踪]等

这是我的代码:

#define N 10;

class String
{
private:
    char str[N];
public:
    String();
    String(char[]);
    ~String();
};
Run Code Online (Sandbox Code Playgroud)

当我改变它

    char str[10];
Run Code Online (Sandbox Code Playgroud)

它确实有效,是不是应该是一样的?

谢谢.

Mar*_*cia 7

#define N 10;
//          ^
Run Code Online (Sandbox Code Playgroud)

因此char str[N];变得

char str[10;];
//         ^
Run Code Online (Sandbox Code Playgroud)

请记住,预处理器只是替换为宏指定的内容.你指定了10;它插入10;N.

一个更好的解决方案,而不是删除那个讨厌的;是做这样的事情1

class String
{
private:
    static const int numChars = 10;
    char str[numChars];
public:
    String();
    String(char[]);
    ~String();
};
Run Code Online (Sandbox Code Playgroud)

很有可能你不需要N在代码的其他部分使用String,所以为什么不在内部定义更好的东西String呢?"一些更好的东西",因为一般认为宏是邪恶的,因此不使用宏会使你,好吧,不是邪恶(或者至少是较小的邪恶).

1 您应该注意:在类定义中定义静态const整数成员