标题:error LNK2001: unresolved external symbol??
只看楼主
I_swear
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-5-14
 问题点数:0 回复次数:8 
error LNK2001: unresolved external symbol??

#include <iostream>
using namespace std;
class Juzhen
{
public:
static void set1();
//void set1();
void set2();
void display();
private:
static int x;
static int y;
//int x;
//int y;
int*p;
};
void Juzhen::set1()
{
cout<<"输入行数和列数"<<endl;
cin>>x>>y;
}
void Juzhen::set2()
{
int a=(x-1)*(y-1);
p=new int [a];
cout<<"输入一个"<<x<<"行"<<y<<"列的矩阵"<<endl;
for(int i=0,b=0;i<x;i++)
for(int j=0;j<y;j++,b++)
cin>>p[b];
cout<<endl;
}
void Juzhen::display()
{
for(int i=0,b=0;i<x;i++){
for(int j=0;j<y;j++,b++)
cout<<p[b]<<" ";
cout<<endl;}
}
int main()
{
Juzhen j1;
Juzhen::set1();
//j1.set1();
j1.set2();
j1.display();
return 0;
}

错误报告:
--------------------Configuration: 的 - Win32 Debug--------------------
Linking...
lizi.obj : error LNK2001: unresolved external symbol "private: static int Juzhen::x" (?x@Juzhen@@0HA)
lizi.obj : error LNK2001: unresolved external symbol "private: static int Juzhen::y" (?y@Juzhen@@0HA)
Debug/的.exe : fatal error LNK1120: 2 unresolved externals
执行 link.exe 时出错.

的.exe - 1 error(s), 0 warning(s)


请问这是什么错误啊?怎样才能解决啊?谢谢~~

搜索更多相关主题的帖子: symbol int void error unresolved 
2007-05-15 16:46
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
静态变量初始化呢?

Fight  to win  or  die...
2007-05-15 16:57
I_swear
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-5-14
得分:0 

静态变量初始化后出现的错误:
--------------------Configuration: 的 - Win32 Debug--------------------
Compiling...
lizi.cpp
Linking...
qdds.obj : error LNK2005: "public: static void __cdecl Juzhen::set1(void)" (?set1@Juzhen@@SAXXZ) already defined in lizi.obj
qdds.obj : error LNK2005: "public: void __thiscall Juzhen::set2(void)" (?set2@Juzhen@@QAEXXZ) already defined in lizi.obj
qdds.obj : error LNK2005: "public: void __thiscall Juzhen::display(void)" (?display@Juzhen@@QAEXXZ) already defined in lizi.obj
qdds.obj : error LNK2005: _main already defined in lizi.obj
Debug/的.exe : fatal error LNK1169: one or more multiply defined symbols found
执行 link.exe 时出错.

的.exe - 1 error(s), 0 warning(s)

2007-05-15 17:33
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 

肯定是初始化错了!


int Juzhen:: x = 1;
int Juzhen:: y = 1;
这样哦!!!


Fight  to win  or  die...
2007-05-15 17:48
I_swear
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-5-14
得分:0 
回复:(aipb2007)肯定是初始化错了![em05]int Juzh...

按你说的初始化了,错误报告还是没任何改变!
2007-05-15 18:04
I_swear
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-5-14
得分:0 
在网上找到个类似的错误,可惜没有给出解决的方案,那里的说法是Juzhen类的成员函数重定义了,造成无法链接。
2007-05-15 18:08
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 

问题是你初始化的位置,我看我发上来算了,呵呵!
[CODE]#include <iostream>
using namespace std;
class Juzhen
{
public:
static void set1();
//void set1();
void set2();
void display();
private:
static int x;
static int y;
//int x;
//int y;
int*p;
};
int Juzhen:: x = 1;
int Juzhen:: y = 1;

void Juzhen::set1()
{
cout<<"输入行数和列数"<<endl;
cin>>x>>y;
}
void Juzhen::set2()
{
int a=(x-1)*(y-1);
p=new int [a];
cout<<"输入一个"<<x<<"行"<<y<<"列的矩阵"<<endl;
for(int i=0,b=0;i<x;i++)
for(int j=0;j<y;j++,b++)
cin>>p[b];
cout<<endl;
}
void Juzhen::display()
{
for(int i=0,b=0;i<x;i++){
for(int j=0;j<y;j++,b++)
cout<<p[b]<<" ";
cout<<endl;}
}
int main()
{
Juzhen j1;
Juzhen::set1();
//j1.set1();
j1.set2();
j1.display();
return 0;
}[/CODE]

再有问题,就无语了!我能通过的!


Fight  to win  or  die...
2007-05-15 18:08
未入流小菜鸟
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-5-1
得分:0 
静态成员变量要在类外部定义一下,倒不一定要初始化。
在类里面只能算声明。
2007-05-15 21:12
linaiyu
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-5-10
得分:0 
对于静态成员,在主函数使用之前必须初始化
2007-05-15 23:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-139605-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.085439 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved