上课作业遇到问题,帮忙看一下

Artorias007 2009-11-30 06:17:08
要求是这样的:
设计一个字典类 dic 功能:添加单词,英汉翻译

数据成员:单词库englishwords
对照中文含义库chinesewords
词典指针mark

成员函数:
添加单词add();
翻译translate();

dic D1;
D1.add("I" "我")
D1.add("a" "一个")
……

D1.trans("I an a student")
输出 我是一个学生

//////////////////////////////////////////////
//////////////////////////////////////////////
下面是我的程序了,三个文件:
//////////////////////////////////////////////
//////////////////////////////////////////////
//-----------------------------------------------dic.h
#include<string>
using namespace std;
//
class Dictionary
{
public:
//
Dictionary()
{
string EnglishWords[100]={""};
string ChineseWords[100]={""};
mark=0;
}
int Add(string enword,string chword);
void Translate();
private:
//
string EnglishWords[100];
string ChineseWords[100];
int mark;
};
/////////////////////////////////////////////
//----------------------------------------------dic.cpp
#include<iostream>
#include"dic.h"
int Dictionary::Add(string enword,string chword)
{
if(mark>=100){cout<<"error!"<<endl;return -1;}
EnglishWords[mark]=enword;
ChineseWords[mark]=chword;
mark++;
return 0;
}
void Dictionary::Translate()
{
string word;
int i;
while(cin>>word)
{
for(i=0;i<mark;i++)
{
if(EnglishWords[i]==word)
{
cout<<ChineseWords[i]<<endl;
break;
}
}
}
}
//////////////////////////////////////////////
//---------------------------------------------dicmain.cpp
#include"dic.h"
int main()
{
Dictionary a1;
a1.Add("I","我");
a1.Translate();
return 0;
}
///////////////////////////////////////////////
///////////////////////////////////////////////
编译没有问题,连接的时候报错:
Linking...
dicmain.obj : error LNK2001: unresolved external symbol "public: void __thiscall Dictionary::Translate(void)" (?Translate@Dictionary@@QAEXXZ)
dicmain.obj : error LNK2001: unresolved external symbol "public: int __thiscall Dictionary::Add(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >)" (?Add@Dictionary@@QAEHV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z)
dicmain.obj : error LNK2001: unresolved external symbol "private: static int Dictionary::mark" (?mark@Dictionary@@0HA)
Debug/dicmain.exe : fatal error LNK1120: 3 unresolved externals
执行 link.exe 时出错.

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

//////////////////////////////////////////////////
//////////////////////////////////////////////////
错误的话,帮我找出现在提示的这个就行了(自己感觉Translate这个函数可能还有问题)
麻烦帮我看看是怎么回事,一周就一节课,没地方问真不方便,尤其是错误看不懂的时候。各位拜托了!
...全文
101 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cattycat 2009-11-30
  • 打赏
  • 举报
回复
还有在cpp文件里using namespace std;
你用的什么IDE,在一个项目中自动会把文件包含进来的。
lgccaa 2009-11-30
  • 打赏
  • 举报
回复
楼主的问题有可能是1楼所说的,楼主检查一下工程是否文件都有加上


另外向楼主提点意见


//dic.h
#ifndef __DIC_H_XXX__ //防止重复包含而产生的编译问题,养成好习惯
#define __DIC_H_XXX__

#include <string>

using namespace std;
//
class Dictionary
{
public:
//
Dictionary(); //养成好习惯,构造函数也放到cpp中
int Add(string enword,string chword);
void Translate();

private:
//
string EnglishWords[100];
string ChineseWords[100];
int mark;
};


#endif






//dic.cpp

#include <iostream>
#include"dic.h"

Dictionary::Dictionary() //
{
string EnglishWords[100]={""};
string ChineseWords[100]={""};
mark=0;
}

int Dictionary::Add(string enword,string chword)
{
if(mark >= 100)
{
cout << "error!" <<endl;
return -1;
}

EnglishWords[mark] = enword;
ChineseWords[mark] = chword;
mark++;

return 0;
}

void Dictionary::Translate()
{
string word;
int i;
while(cin>>word)
{
for(i = 0; i < mark; i++)
{
if(EnglishWords[i] == word)
{
cout << ChineseWords[i] <<endl;
break;
}
}
}
}

stardust20 2009-11-30
  • 打赏
  • 举报
回复
调了上。。好像不啥问题啊。。。可能是一楼说的原因吧
baitxgt 2009-11-30
  • 打赏
  • 举报
回复
是不是原来有编译文件啊?你应该先把原来的删掉!
z569362161 2009-11-30
  • 打赏
  • 举报
回复
看看.
mstlq 2009-11-30
  • 打赏
  • 举报
回复
请将dic.cpp加入工程

照目前的情况看来,楼主的dic.cpp没有参与编译……

64,648

社区成员

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

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