此程序用于将Roman Numeral转换为等效的十进制数。我理解以下代码中的逻辑并不适合正常运行所需的位置。但是,我只是尝试在处理算法之前正确设置类成员,并且在引用定义为字符串类型的私有成员romanNumeral时出现语法错误。以下显示了我的代码以及我收到的错误消息。
标题文件 - roman.h
class romanType
{
public:
void storeRoman();
void convertRoman();
void printRoman();
romanType();
private:
string romanNumeral;
int decimal;
};
植入文件 - romanImp.cpp
#include <iostream>
#include <string>
#include "roman.h"
using namespace std;
void romanType::storeRoman()
{
// Promt user to enter roman numeral and store
// in romanNumeral variable member
cout << "Please enter a Roman Numeral: ";
getline(cin, romanNumeral);
// Input Validation
}
void romanType::convertRoman()
{
// When function is called, decimal starts at zero
decimal = 0;
for (int index = 0; index < romanNumeral.size(); index++)
{
switch (romanNumeral[index])
{
case 'M':
decimal += 1000;
break;
case 'D':
decimal += 500;
break;
case 'C':
decimal += 100;
break;
case 'L':
decimal += 50;
break;
case 'X':
decimal += 10;
break;
case 'V':
decimal += 5;
break;
case 'I':
decimal += 1;
break;
}
}
}
void romanType::printRoman()
{
// Print roman numeral
cout << "The Roman Numeral entered was: " << romanNumeral << endl;
// Print deciaml
cout << "This converts to " << decimal << " in decimal." << decimal << endl;
}
romanType::romanType()
{
romanNumeral = "I";
decimal = 1;
}
主要来源文件
// Project 4
#include <iostream>
#include <string>
#include "roman.h"
using namespace std;
int main()
{
romanType testRoman;
// Display default constructor values
testRoman.printRoman();
// Run program
testRoman.storeRoman();
testRoman.convertRoman();
testRoman.printRoman();
return 0;
}
错误消息:
错误C2146:语法错误:缺少';'在标识符'romanNumeral'之前 错误C4430:缺少类型说明符 - 假定为int。注意:C ++不支持default-int 错误C2065:'romanNumeral':未声明的标识符
答案 0 :(得分:2)
在你的roman.h文件中,你没有包含字符串类,所以我认为这是至少其中一个错误会消失的地方。这是我用来在codeblocks中编译的代码
#ifndef ROMAN_H
#define ROMAN_H
#include <string>
class romanType
{
public:
void storeRoman();
void convertRoman();
void printRoman();
romanType();
private:
std::string romanNumeral;
int decimal;
};
#endif // ROMAN_H
答案 1 :(得分:0)
将#include <string>
添加到roman.h
的顶部,并在类声明中使用std::string
代替string
。