Blue
Red
Green
Orange
Voilet
Slate
Dark

一个奇怪的问题! (已仍出去的分,收不分来了,欢迎灌水,见者有份) (50分)

  • 主题发起人 liao6373
  • 开始时间
L

liao6373

Unregistered / Unconfirmed
GUEST, unregistred user!
大家看看这一段很简单的代码:
class Test
{ private:
static int len;
public:
void Length();
};
void Test::Length()
{ len = 5;
}
int main()
{ return 0;
}
编译时没错,但连接时有错,解决该问题有两个方法:
[blue]方法一:[/blue]
class Test
{ private:
static int len;
public:
void Length();
};
[red]int Test::len;
[/red]//加入该行代码
void Test::Length()
{ len = 5;
}
int main()
{ return 0;
}
[blue]方法二:[/blue]
class Test
{ private:
static int len;
public:
void Length(){ len = 5;
}
};
int main()
{ return 0;
}
谁能告诉我这是为什么?
 
L

liao6373

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么没人回答?是太难了?
 

张一健

Unregistered / Unconfirmed
GUEST, unregistred user!
不清楚,是C++吧,忘光光了,试试:
void Test::Length()
{ this->len = 5;
}
 
L

liao6373

Unregistered / Unconfirmed
GUEST, unregistred user!
我自己弄明白了,是这样的:
这是static的一个特性,在类里面,声明一个static变量,这该变量属于类变量,而不是
实例变量,并且它只是一个声明,而不是定义,在编译时并没有分配空间,如果用到了这个
变量,就会产生错误。所以要想用到这个变量,一定要在类外面重新定义一下,以分配内存
空间,这样就可以使用了。如果在类里面使用这个变量,如方法二,这时编译器就为它分配
内存空间,所以没有错误。
 

夜之紫瞳

Unregistered / Unconfirmed
GUEST, unregistred user!
遇到问题多想想嘛,不要老问问题,自己给自己找麻烦,呵呵。
 
L

liao6373

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 

Similar threads

I
回复
0
查看
597
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
656
import
I
I
回复
0
查看
736
import
I
顶部 底部