类中字符串成员变量的语法错误

时间:2013-12-13 18:23:39

标签: c++ string class syntax-error

此程序用于将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':未声明的标识符

2 个答案:

答案 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