2017-11-03 8 views
-1

私は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; 
} 
+2

エラーメッセージについては何が不明ですか? – user0042

+0

クラス宣言の後に余分なメンバーを追加することはできません。 id * really *はクラスのメンバーではありません。 –

+0

クラス宣言に 'static int currentId;'を追加する必要があります。 – drescherjm

答えて

0

...あなたがエラーを取得しています。

... snip ... 
class FBLPost { 

    private: 
    string Post = ""; 
    FBLPost* next = 0; 
    int likes = 0; 
    FBLUser* author; 
    int id; 
    static int currentId; 
... snip ... 
+0

'FBLPost'の宣言で' currentId'を初期化しようとするべきではありません。 'static int FBLPost :: currentId = 0;'で既にそれを行っています。 – frslm

+0

これで、C:\ Users \ Dev \ Desktop \ myProjects \ Assignment_3_220 \ Assignment3 \ FBLPost.h | 18 |エラーが発生しました:ISO C++では、非const staticメンバー 'FBLPost :: currentId '| –

+0

答えを編集しました。ありがとう@frslm。 – negacao

関連する問題