在 c++ 中获取"is not a static member of class"错误
Getting the "is not a static member of class" error in c++
我正试图为类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 ...
相关文章:
- 如何处理 c++ 中类实现中的"invalid use of non-static data member"?
- 收到错误"invalid use of non-static data member 'stu::n' "
- 当初始值设定项是基类名时'initializer does not name a non-static data member or base class'错误
- C++线程"Call to non-static member function without an object argument"
- 出现这种错误的原因是什么"invalid use of non-static data member "
- 如何修复库中的"invalid use of non-static member function" 导入另一个库
- 在C++中传递对象会产生'invalid use of non-static member'错误
- 为什么当我尝试在类中创建数组时"invalid use of non-static data member"我会收到错误?
- google-test and static constexpr member
- C++ 小错误:"... is not a static data member of ‘class ...'"
- 在 c++ 中获取"is not a static member of class"错误
- 在这种情况下如何解决"Reference to non-static member function must be called"?
- "Only non-static member functions may be virtual"
- 访问父类的成员"Invalid use of non-static data member" C++
- "invalid use of non static member function" 这是什么?
- C++类模板和嵌套结构。 "Invalid use of non-static data member..."
- 为什么一个文件中没有错误,另一个文件中没有错误 - "Non Static Member Reference mush be relative to specific object"
- 为什么在 C++ 中将函数作为参数传递给 pthread 时会出现"non-static member function"错误?
- 函数指针生成'invalid use of non-static member function'错误
- 如何在Xcode 4中摆脱"In class initializer for static data member ... is a C++0x extension"警告