C++ 获得;不是类的静态成员;c+中的错误+;

C++ 获得;不是类的静态成员;c+中的错误+;,c++,C++,我试图为类FBLPost创建一个静态int变量currentId,以便每次创建FBLPost对象时,都会为新实例分配该id,并且为创建的下一个新实例将静态currentId增加1。我的构造函数是在FBLPost.cpp中实现的。这是java中的一个琐碎任务,但是C++给了我一个困难的时间。我在谷歌上搜索过,也看过其他帖子,所以如果我错过了什么,请原谅我。以下是我的代码和错误: C:\Users\Dev\Desktop\myProjects\Assignment_3_220\Assignment3

我试图为类FBLPost创建一个静态int变量currentId,以便每次创建FBLPost对象时,都会为新实例分配该id,并且为创建的下一个新实例将静态currentId增加1。我的构造函数是在FBLPost.cpp中实现的。这是java中的一个琐碎任务,但是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)) ===|
当然currentId没有声明,我正在这里声明它

此外,如果我尝试删除static关键字,我仍然会得到一个错误,如果我尝试在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

忽略更好的方法来做到这一点。。。由于currentId未声明为FBLPost的成员,因此出现错误

... snip ...
class FBLPost {

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

忽略更好的方法来做到这一点。。。由于currentId未声明为FBLPost的成员,因此出现错误

... snip ...
class FBLPost {

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

错误消息有什么不清楚的地方?您不能在类声明之后添加额外的成员。该id实际上不是该类的成员。您需要添加
static int currentId在类声明中。错误消息有什么不清楚的地方?不能在类声明后添加额外成员。该id实际上不是该类的成员。您需要添加
static int currentId。您不应该尝试在
FBLPost
的声明中初始化
currentId
——您已经在使用
static int FBLPost::currentId=0 >我刚才尝试过,现在我得到了C:\De\\Dea\Tyr\MyStudio\AddiTrime3G220\AdvutoS3\fBLSTP.H 18错误:ISOC++禁止在非constatic static成员“fBLPOST::Curraldd”类初始化时,不应该在 fBLestPo> <代码>声明中初始化<代码> CurrimeD<代码> -您已经在使用
static int FBLPost::currentId=0 >我刚才尝试过,现在我得到C++:\Dave\Dea\Tyr\MyStudio\AddiTrime3G220\AdvutoS3\fBLSTP.H. 18错误:ISOC+禁止在非constatic static成员“fBLPOST::Currutd”类初始化时禁止初始化。