私はFBLPostクラスの静的int変数currentIdを作成しようとしているので、FBLPostオブジェクトが作成されるたびに新しいインスタンスにid静的currentIdは、作成された次の新しいインスタンスに対して1だけインクリメントされます。私のコンストラクタはFBLPost.cppに実装されています。これはJavaの簡単な作業ですが、C++は私に苦労しています。私はグーグルで、他の投稿を見ているので、もし私が何かを忘れてしまったら、私を許してください。ここに私のコードとエラーがあります:C++で "クラスの静的メンバーではありません"エラーを取得する
C:\Users\Dev\Desktop\myProjects\Assignment_3_220\Assignment3\FBLPost.h|31|error: 'int FBLPost::currentId' is not a static data member of 'class FBLPost'|
C:\Users\Dev\Desktop\myProjects\Assignment_3_220\Assignment3\FBLPost.cpp||In constructor 'FBLPost::FBLPost()':|
C:\Users\Dev\Desktop\myProjects\Assignment_3_220\Assignment3\FBLPost.cpp|5|error: 'currentId' was not declared in this scope|
||=== Build failed: 3 error(s), 3 warning(s) (0 minute(s), 0 second(s)) ===|
もちろん、私はここでそれを宣言しようとしています。
また、静的キーワードを削除しようとするとエラーが発生し、FBLPost内の静的変数を宣言しようとするとエラーが発生します。 currentIdがFBLPostのメンバーを宣言されないであるため、これを行うには良い方法を無視
FBLPost.h
#ifndef FBLPOST_H_INCLUDED
#define FBLPOST_H_INCLUDED
#include <stdio.h>
#include <string>
#include <stdlib.h>
class FBLUser;
using namespace std;
class FBLPost {
private:
string Post = "";
FBLPost* next = 0;
int likes = 0;
FBLUser* author;
int id;
public:
FBLPost();
string getPost();
void setPost(string p);
FBLPost* getNext();
void setNext(FBLPost* n);
int getLikes();
void incrementLikes();
void setAuthor(FBLUser* user);
FBLUser* getAuthor();
};
static int FBLPost::currentId = 0; //This line give me an error
#endif // FBLPOST_H_INCLUDED
FBLPost.cpp
#include "FBLPost.h"
using namespace std;
FBLPost::FBLPost() {
id = ++currentId;
}
string FBLPost::getPost() {
return Post;
}
void FBLPost::setPost(string p) {
Post = p;
}
FBLPost* FBLPost::getNext() {
return next;
}
void FBLPost::setNext(FBLPost* n) {
next = n;
}
int FBLPost::getLikes() {
return likes;
}
void FBLPost::incrementLikes() {
likes++;
}
void FBLPost::setAuthor(FBLUser* user) {
author = user;
}
エラーメッセージについては何が不明ですか? – user0042
クラス宣言の後に余分なメンバーを追加することはできません。 id * really *はクラスのメンバーではありません。 –
クラス宣言に 'static int currentId;'を追加する必要があります。 – drescherjm