まだ作りかけのプログラムですが,試しに実行してみたところ,以下のエラーが出てきました。
クラスのメンバにstringやifstreamは使えないのでしょうか?
1>------ ビルド開始: プロジェクト: VM_Inverter, 構成: Debug Win32 ------ 1>Main.cpp 1>c:\users\ken\documents\nand2tetris\projects\07\virtualmachine\vm_inverter\parser.h(24): error C3646: 'ifs': 不明なオーバーライド指定子です 1>c:\users\ken\documents\nand2tetris\projects\07\virtualmachine\vm_inverter\parser.h(24): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\users\ken\documents\nand2tetris\projects\07\virtualmachine\vm_inverter\parser.h(25): error C3646: 'curcmd': 不明なオーバーライド指定子です 1>c:\users\ken\documents\nand2tetris\projects\07\virtualmachine\vm_inverter\parser.h(25): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>Parser.cpp 1>c:\users\ken\documents\nand2tetris\projects\07\virtualmachine\vm_inverter\parser.h(24): error C3646: 'ifs': 不明なオーバーライド指定子です 1>c:\users\ken\documents\nand2tetris\projects\07\virtualmachine\vm_inverter\parser.h(24): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\users\ken\documents\nand2tetris\projects\07\virtualmachine\vm_inverter\parser.h(25): error C3646: 'curcmd': 不明なオーバーライド指定子です 1>c:\users\ken\documents\nand2tetris\projects\07\virtualmachine\vm_inverter\parser.h(25): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\users\ken\documents\nand2tetris\projects\07\virtualmachine\vm_inverter\parser.cpp(9): error C2065: 'ifs': 定義されていない識別子です。 1>c:\users\ken\documents\nand2tetris\projects\07\virtualmachine\vm_inverter\parser.cpp(10): error C2065: 'ifs': 定義されていない識別子です。 1>c:\users\ken\documents\nand2tetris\projects\07\virtualmachine\vm_inverter\parser.cpp(13): error C2065: 'ifs': 定義されていない識別子です。 1>c:\users\ken\documents\nand2tetris\projects\07\virtualmachine\vm_inverter\parser.cpp(19): error C2065: 'ifs': 定義されていない識別子です。 1>c:\users\ken\documents\nand2tetris\projects\07\virtualmachine\vm_inverter\parser.cpp(19): error C2065: 'curcmd': 定義されていない識別子です。 1>c:\users\ken\documents\nand2tetris\projects\07\virtualmachine\vm_inverter\parser.cpp(20): error C2065: 'curcmd': 定義されていない識別子です。 1>c:\users\ken\documents\nand2tetris\projects\07\virtualmachine\vm_inverter\parser.cpp(21): error C2065: 'curcmd': 定義されていない識別子です。 1>c:\users\ken\documents\nand2tetris\projects\07\virtualmachine\vm_inverter\parser.cpp(27): error C2065: 'curcmd': 定義されていない識別子です。 1>コードを生成中... 1>プロジェクト "VM_Inverter.vcxproj" のビルドが終了しました -- 失敗。 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
Main.cpp
C++
1 2#include <iostream> 3#include "Parser.h" 4 5using namespace std; 6 7int main() 8{ 9 Parser parser; 10 parser.advance(); 11 parser.commandType(); 12 parser.advance(); 13 parser.commandType(); 14 parser.advance(); 15 parser.commandType(); 16}
Parser.h
C++
1#pragma once 2#include <fstream> 3#include <sstream> 4#include <string> 5#include <iostream> 6 7enum comType{ 8 C_ARITHMATIC, 9 C_PUSH, 10 C_POP, 11 C_LABEL, 12 C_GOTO, 13 C_IF, 14 C_FUNCTION, 15 C_RETURN, 16 C_CALL 17}; 18class Parser { 19public: 20 Parser(); //読みこみファイルを開く 21 void advance(); //次のコマンドを読みこむ 22 int commandType(); //コマンドのタイプを返す 23 ifstream ifs; 24 string curcmd; //現在コマンド 25};
Paser.cpp
C++
1#include "Parser.h" 2using namespace std; 3 4//クラスParserの実装 5Parser::Parser() 6{ 7 string infilename; 8 cin >> infilename; 9 ifs.open(infilename); 10 while(ifs.fail()) { 11 12 cin >> infilename; 13 ifs.open(infilename); 14 } 15} 16 17void Parser::advance() 18{ 19 getline(ifs, curcmd); 20 while (curcmd[0] == ' ') { 21 curcmd.erase(0); 22 } 23} 24 25int Parser::commandType() 26{ 27 cout << "curcmd" << curcmd << endl; 28 29}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/05 06:36
2019/05/05 06:52 編集
2019/05/05 12:02