指针可不可以用static

永夜星空 2005-08-13 12:35:36
我想要个静态的指针,于是在类的声明中加了如下一行:

static node * current; //node是个结构体

开始以为这就和 static node current;定义一个静态变量差不多,但是出错,这样提示
T1 error LNK2001: 无法解析的外部符号 "private: static class node * graph::current" (?current@graph@@0PAVnode@@A)
这是为什么?
...全文
375 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
smjacky 2005-08-13
  • 打赏
  • 举报
回复
静态变量一定要初始化
编译器不同,情况不同
有些编译器可以在类里初始化

class A
{
private:
static int a = 0;
}
有些编译器这样会报错
一定要在外面定义
int A::a = 0;
defyer007 2005-08-13
  • 打赏
  • 举报
回复
所有静态变量都要初始化
skykeen 2005-08-13
  • 打赏
  • 举报
回复
试试:
假定你这个类名为 graph

你还须要在graph.cpp中定义它:
node * graph::current = NULL;
注意以下几点
1:这里没有static
2:一定记得加graph::
3:赋初值
lxk_cool 2005-08-13
  • 打赏
  • 举报
回复
对,同意楼上,要初始化
lujun-cc 2005-08-13
  • 打赏
  • 举报
回复
当然可以使用static型指针,只不过要记得初始化!
foochow 2005-08-13
  • 打赏
  • 举报
回复
class Node
{
private:
int i;
public:
Node(int x=0):i(x){};
};
class Graph
{
private:
static Node *node;
public:
Graph(void);
~Graph(void);
};
Node*Graph::node=new Node(100);
doway 2005-08-13
  • 打赏
  • 举报
回复
struct Node {
int id;
char *name;
};

class Graph
{
private:
static Node *node;

public:
Graph(void);
~Graph(void);
};

是想这样吗?道理上讲没有问题的,在 VC 上生成也没有问题。估计是语法问题。

永夜星空 2005-08-13
  • 打赏
  • 举报
回复
谢谢大家,问题解决了

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧