在 c++ 中获取"is not a static member of class"错误

Getting the "is not a static member of class" error in c++

本文关键字:member static of 错误 class not c++ 获取 is      更新时间:2023-10-16

我正试图为类FBLPost创建一个静态int变量currentId,以便每次创建FBLPost对象时,都会为新实例分配该id,并且为创建的下一个新实例将静态currentId增加1。我的构造函数是在FBLPost.cpp中实现的。这在java中是一项微不足道的任务,但C++给我带来了困难。我已经在谷歌上搜索并查看了SO上的其他帖子,所以如果我错过了什么,请原谅我。这是我的代码和错误:

C:UsersDevDesktopmyProjectsAssignment_3_220Assignment3FBLPost.h|31|error: 'int FBLPost::currentId' is not a static data member of 'class FBLPost'|
C:UsersDevDesktopmyProjectsAssignment_3_220Assignment3FBLPost.cpp||In constructor 'FBLPost::FBLPost()':|
C:UsersDevDesktopmyProjectsAssignment_3_220Assignment3FBLPost.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中声明静态变量,我会收到错误。

FBL成本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;
}

忽略更好的方法。。。您得到错误是因为currentId是而不是被声明为FBLPost的成员。

... snip ...
class FBLPost {
private:
string Post = "";
FBLPost* next = 0;
int likes = 0;
FBLUser* author;
int id;
static int currentId;
... snip ...
相关文章: