У меня есть функция, изначально размещенная в (trynow.hpp). я вызвал функцию в файле парсера, и она работает нормально. Теперь я хотел бы добавить функцию в класс внутри "trynow.hpp", но когда я добавил функцию в класс, вызов не работает. так как я могу сначала определить класс в файле парсера? вот мой файл парсера (parser.ypp):
%{
#include <iostream>
#include <string>
#include <cstdlib>
#include "trynow.hpp"
using namespace std;
extern int yylex();
void yyerror(const char *s);
%}
//-- SYMBOL SEMANTIC VALUES -----------------------------
%union {
int ival;
char* sval;
char symbol;
}
%token <ival> NUM
%token <sval> WORDS
%token <symbol> COMMA
%%
//-- rules -----------------------------
program : /* empty */
| program rules
;
rules:
WORDS COMMA WORDS COMMA NUM {show_inputs($1 , $3 , $5);};
;
%%
int main(int argc, const char * argv[]) {
string input;
cout<<"enter the bdd name followed by the word and number of ocuurances, sperated by comma "
<<endl;
yyparse();
return 0;
}
void yyerror(const char *s) {
cout << "wrong entry! " << s << endl;
// might as well halt now:
}
, а вот мой файл (trynow.hpp):
#include <stdio.h>
#include <string>
#include <cstddef>
#include <istream>
#include "parser.tab.hpp"
#include<iostream>
using namespace std;
class finalnow{
public: void show_inputs( string word1, string word2,int number ){
std::cout << "you have entered the followings : " << word1 << "," << word2 << " and " <<
number
<<std::endl;}
};
Я видел этот вопрос, но функция не была внутри класс: вызов c функции в зубре Я также слышал о:% parse-param {finalnow & self} и затем попытался сделать self.show_inputs ($ 1, $ 3, $ 5); но это не удалось.