C ++基本语法错误

时间:2013-05-11 15:05:16

标签: c++ definition

我收到以下代码的错误,不知道我哪里出错了。

#include <iostream>
#include <fstream>
#include <cstring>
#include "Translator.h"

using namespace std;

int main (void)

{

char Dictionary::translate (char out_s[], const char s[])
{
int i;

for (i=0;i < numEntries; i++)
{
if (strcmp(englishWord[i], s)==0)
break;
}

if (i<numEntries)
strcpy(out_s,elvishWord[i]);
}

char Translator::toElvish(char elvish_line[],const char english_line[])

{
int j=0;

char temp_eng_words[2000][50];
//char temp_elv_words[2000][50]; NOT SURE IF I NEED THIS

std::string str = english_line;
std::istringstream stm(str);
string word;
while( stm >> word) // read white-space delimited tokens one by one
{
int k=0;
strcpy (temp_eng_words[k],word.c_str());

k++;

}

for (int i=0; i<2000;i++) // ERROR: out_s was not declared in this scope
{
Dictionary::translate (out_s,temp_eng_words[i]); // ERROR RELATES TO THIS LINE
}

}



Translator::Translator(const char dictFileName[]) : dict(dictFileName)
{
char englishWord[2000][50];
char temp_eng_word[50];
char temp_elv_word[50];
char elvishWord[2000][50];
int num_entries;

fstream str;

str.open(dictFileName, ios::in);
int i;

while (!str.fail())
{
for (i=0; i< 2000; i++)
{
str>> temp_eng_word;
str>> temp_elv_word;
strcpy(englishWord[i],temp_eng_word);
strcpy(elvishWord[i],temp_elv_word);
}

num_entries = i;

}

str.close();

}
}}

我得到的第一个错误是

char Dictionary::translate (char out_s[], const char s[])
 {
   int i;

其中说“在'{'标记之前不允许使用函数定义。我得到的第二个错误是在输入结束时有一个预期的'}',但无论我放入多少或者遗漏它仍然会给出相同的错误信息。

和想法??

3 个答案:

答案 0 :(得分:4)

您不应该在另一个函数中定义函数。 函数定义相继出现。

答案 1 :(得分:4)

不允许在C++中声明内部函数。 将您的函数移动到不同的范围,而不嵌套到main

答案 2 :(得分:4)

您正在定义 main()内的所有函数。在main()之前将它们全部移动。