c++ - Initializer but incomplete type? -
the following code gives me 2 errors when compile
#include <iostream> #include <fstream> #include <cstring> #include "translator.h" using namespace std; void dictionary::translate(char out_s[], const char s[]) { int i; char englishword[max_num_words][max_word_len]; (i=0;i < numentries; i++) { if (strcmp(englishword[i], s)==0) break; } if (i<numentries) strcpy(out_s,elvishword[i]); } char translator::toelvish(const 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 need std::string str = english_line; std:: istringstream stm(str); string word; while( stm >> word) // read white-space delimited tokens 1 one { int k=0; strcpy (temp_eng_words[k],word.c_str()); k++; } (int i=0; i<2000;i++) // error: out_s not declared in scope { dictionary::translate (out_s,temp_eng_words[i]); // error relates 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()) { (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(); } }
the first 1 @ std::string istringstream stm(str)
; says variable has initializer incomplete type. if put in std::string istringstream stm(str)
; says expected initializer before stm
andstm not declared in scope
.
it says out_s
not declared in scope @ dictionary::translate (out_s,temp_eng_words[i])
;. don't see why 1 parameter recognisied , 1 not?
thanks in advance.
you have include header file:
#include <sstream> #include <string>
when want use stringstream
, string
.
meanwhile:
dictionary::translate (out_s,temp_eng_words[i]);
if out_s
not member of class, seems forgot define out_s
before using inside toelvish
.
meanwhile:
while( stm >> word) // read white-space delimited tokens 1 one { int k=0; //^^why initialize k everytime read word? strcpy (temp_eng_words[k],word.c_str()); k++; }
Comments
Post a Comment