尝试定义私有变量时无法编译.cpp文件

时间:2016-10-08 19:35:34

标签: c++ g++ private

我正在尝试编译包含.h文件的.cpp文件,然后实现概述的类。

在String.h中:

replyMessage

在String.cpp中:

using namespace std;

class String
{
        private:

                 int _length;
                 char *data;
                 int getCharArraySize(char arr[]);

当我尝试使用g ++编译时,我收到此错误:

 #include "String.h"

 using namespace std;

      /*
       * Private vars and methods
       */
      int String::_length;
      char String::*data;
      int String::getCharArraySize(char arr[])
      {
          //method body
          return 0;
      }

我只遇到String :: _ length的问题。我最初认为这是由于_length是私有的,但所有其他私有方法/ vars,编译得很好。我还需要保留这个.h文件,所以我不能公开它。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

嗯,它与编译器完全一样:_length不是静态成员变量。然而,您通过提供自己的定义将其视为一个。根本不要那样做。 只应定义 static 成员变量。

data同样如此。

顺便说一句,如果你必须定义一个char*变量,那么这是错误的:

char String::*data;

这是对的:

char* String::data;

词汇语法生成奇怪(继承自C)尽管如此,*类型的一部分,而不是名称。