.hファイルを含む.cppファイルをコンパイルしようとしていて、そのアウトラインのクラスを実装しています。 string.hの中プライベートバールを定義しようとすると.cppファイルをコンパイルできない
:String.cppで
using namespace std;
class String
{
private:
int _length;
char *data;
int getCharArraySize(char arr[]);
:
% g++ String.cpp -c
String.cpp:14:17: error: ‘int String::_length’ is not a static data member of ‘class String’
int String::_length;
私は午前:
#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がプライベートであるが、他のすべてのプライベートメソッド/バールが原因であると考えていました。私はまた、この.hファイルをそのまま残す必要があるので、公開することはできません。どんな助けもありがとう!
静的でないメンバー変数の場合、 'int String :: _ length;'は必要ありません。 –
コードを投稿する際には、行番号を含めないでください(コードをコピーして自分自身を試してみるのは難しくなります)。代わりに、たとえばエラーが発生した行をマークするコメント。 –
それでは、単にコンストラクタ内で定義するだけですか?また、正式に言及した。私は質問を編集します。 –