c++ - 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();
}
解决方案
为什么我在课堂上的变量不起作用?
它工作得很好,只是你没有退回它。当您按值返回某些内容时,您实际上是在制作变量的临时副本。当然,您可以通过引用返回它:
string &getRomanNumeral() {
return romanNumeral;
}
但是,这并没有多大意义,因为您不再需要setRomanNumberal()
,您可以简单地使用getRomanNumberal()
:
romanObject.getRomanNumeral()="hello world";
您错过设置类成员值的细节是通过从std::cin
. 读完字符串后,你需要做什么?您需要设置它,那么为什么要使用名为 的东西getRomanNumeral()
?这没有多大意义,不是吗?
所以,真的,你原来的方法是正确的,类似于:
string s;
cin >> s;
romanObject.setRomanNumeral(s);
您正在获取变量 from cin
,并将其设置在您的对象中;在任何时候,您都不会在对象中获取此变量的现有值。
推荐阅读
- android - 字符串翻译(本地化)如何适用于特定语言和区域设置?
- button - 如何处理 DDDW 的 buttonclicked 事件?
- c# - 统一下载后如何检查可寻址资产或场景是否被缓存?
- pytorch - pytorch - 为什么使用 Tensor.requires_grad_(True) 而不是 Tensor.requires_grad=True
- react-native - React-native-gesture-handler 有问题(找不到符号字符串溢出 = ((ReactViewGroup) view).getOverflow();)
- android - 如何仅显示我在 Android Studio 中明确编写的 logcat
- python - Python:是否有“生成器矩阵”库
- entity-framework - EF Lambda 如何为 GroupJoin 进行投影
- xamarin - 模板可以简化将 FormattedText 中的 FormattedString 中的一个或多个跨度添加到标签吗?
- java - Eclipse 非活动调试点