【发布时间】:2016-10-08 19:35:34
【问题描述】:
我正在尝试编译一个包含 .h 文件的 .cpp 文件,然后实现概述的类。
在 String.h 中:
using namespace std;
class String
{
private:
int _length;
char *data;
int getCharArraySize(char arr[]);
在 String.cpp 中:
#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;
}
当我尝试使用 g++ 编译时,我得到了这个错误:
% g++ String.cpp -c
String.cpp:14:17: error: ‘int String::_length’ is not a static data member of ‘class String’
int String::_length;
我只对 String::_length 有问题。我最初认为这是由于 _length 是私有的,但所有其他私有方法/变量都编译得很好。我还需要保留这个 .h 文件,所以我不能只公开它。任何帮助将不胜感激!
【问题讨论】:
-
你不需要那个:
int String::_length;用于非静态成员变量。 -
发布代码时,请不要包含行号(复制代码自己尝试会很困难)。而是使用例如cmets 标记出错误的行。
-
那么我应该在构造函数中简单地定义它吗?此外,适当指出。我将编辑问题。
-
你在用哪本书来学习 C++?