首页 > 解决方案 > cin无法输入

问题描述

这是我第一次使用类,我正在编写一个简单的程序,该程序将采用某个罗马数字并打印出等价的数字。但是,我正在努力编码我的用户输入,我的 cin >> romanObject.getRomanNumeral(); 不工作。我收到错误 E0349,说没有运算符“>>”与这些操作数匹配。但是,当我只使用在我的主函数中声明的一个简单的 char 变量时,它工作得很好。为什么我在课堂上的变量不起作用?

#include <iostream>
#include <string>

using namespace std;

class romanType {

public:

    void setRomanNumeral(string x) {
        romanNumeral = x;
    }
    string getRomanNumeral() {
        return romanNumeral;
    }
private:
    string romanNumeral;

};

void store();

int main()
{
    store();
    return 0;
}   

void store() // Takes user input.
{
    romanType romanObject;
    romanObject.setRomanNumeral("Blank");

    cout << "Enter one of the following roman numerals" << endl;
    cout << "I, V, X, L, C, D, M." << endl;
    cin >> romanObject.getRomanNumeral();

}

标签: c++classcin

解决方案


为什么我在课堂上的变量不起作用?

它工作得很好,只是你没有退回它。当您按值返回某些内容时,您实际上是在制作变量的临时副本。当然,您可以通过引用返回它:

string &getRomanNumeral() {
    return romanNumeral;
}

但是,这并没有多大意义,因为您不再需要setRomanNumberal(),您可以简单地使用getRomanNumberal()

romanObject.getRomanNumeral()="hello world";

您错过设置类成员值的细节是通过从std::cin. 读完字符串后,你需要做什么?您需要设置它,那么为什么要使用名为 的东西getRomanNumeral()?这没有多大意义,不是吗?

所以,真的,你原来的方法是正确的,类似于:

string s;

cin >> s;

romanObject.setRomanNumeral(s);

您正在获取变量 from cin,并将其设置在您的对象中;在任何时候,您都不会在对象中获取此变量的现有值。


推荐阅读