我正在尝试编译包含.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文件,所以我不能公开它。任何帮助将不胜感激!
答案 0 :(得分:1)
嗯,它与编译器完全一样:_length
不是静态成员变量。然而,您通过提供自己的定义将其视为一个。根本不要那样做。 只应定义 static 成员变量。
data
同样如此。
顺便说一句,如果你必须定义一个char*
变量,那么这是错误的:
char String::*data;
这是对的:
char* String::data;
词汇语法生成奇怪(继承自C)尽管如此,*
是类型的一部分,而不是名称。