并使用它们从用户输入

前端之家收集整理的这篇文章主要介绍了并使用它们从用户输入前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的代码中有一个枚举,如下所示:enum Status {In-Active,Active};
状态对象作为参数传递给Person对象,因此我希望用户进入活动或活动状态并将其保存在状态变量中.我该怎么做?我尝试了它,但它没有工作.

这是我的代码

  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. enum Status {InActive,Active};
  6.  
  7. class Person {
  8. private:
  9. string name;
  10. int age;
  11. Status status;
  12.  
  13. public:
  14. Person (const string &_name,const int _age,const Status _status) : name(_name),age(_age),status(_status) {}
  15.  
  16. string &getName () { return name; }
  17. int getAge () { return age; }
  18. Status getStatus () { return status; }
  19.  
  20. void setName (const string &_name) { name = _name; }
  21. void setAge (const int _age) { age = _age; }
  22. void setStatus (const Status _status) { status = _status; }
  23. };
  24.  
  25. ////////////////////////////////////////////////////////////////////////////////
  26. ///////////////////////////////// Main Method //////////////////////////////////
  27. ////////////////////////////////////////////////////////////////////////////////
  28.  
  29. int main () {
  30. string name;
  31. int age;
  32. Status status;
  33.  
  34. cout << "Enter a name: "; getline(cin,name);
  35. cout << "Enter age: "; cin >> age;
  36. cout << "Enter status: "; cin >> status;
  37.  
  38. Person p(name,age,status);
  39.  
  40. return 0;
  41. }

这里是我得到的错误(这是构建日志):

  1. Compiling: C:\Users\KiKo-SaMa\Desktop\C++\Person.cpp
  2. C:\Users\KiKo-SaMa\Desktop\C++\Person.cpp: In function 'int main()':
  3. C:\Users\KiKo-SaMa\Desktop\C++\Person.cpp:36:38: error: no match for 'operator>>' in 'std::cin >> status'
  4. C:\Users\KiKo-SaMa\Desktop\C++\Person.cpp:36:38: note: candidates are:
  5. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:122:7: note: std::basic_istream<_CharT,_Traits>::__istream_type& std::basic_istream<_CharT,_Traits>::operator>>(std::basic_istream<_CharT,_Traits>::__istream_type& (*)(std::basic_istream<_CharT,_Traits>::__istream_type&)) [with _CharT = char,_Traits = std::char_traits<char>,std::basic_istream<_CharT,_Traits>::__istream_type = std::basic_istream<char>]
  6. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:122:7: note: no known conversion for argument 1 from 'Status' to 'std::basic_istream<char>::__istream_type& (*)(std::basic_istream<char>::__istream_type&) {aka std::basic_istream<char>& (*)(std::basic_istream<char>&)}'
  7. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:126:7: note: std::basic_istream<_CharT,_Traits>::__ios_type& (*)(std::basic_istream<_CharT,_Traits>::__ios_type&)) [with _CharT = char,_Traits>::__istream_type = std::basic_istream<char>,_Traits>::__ios_type = std::basic_ios<char>]
  8. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:126:7: note: no known conversion for argument 1 from 'Status' to 'std::basic_istream<char>::__ios_type& (*)(std::basic_istream<char>::__ios_type&) {aka std::basic_ios<char>& (*)(std::basic_ios<char>&)}'
  9. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:133:7: note: std::basic_istream<_CharT,_Traits>::operator>>(std::ios_base& (*)(std::ios_base&)) [with _CharT = char,_Traits>::__istream_type = std::basic_istream<char>]
  10. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:133:7: note: no known conversion for argument 1 from 'Status' to 'std::ios_base& (*)(std::ios_base&)'
  11. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:169:7: note: std::basic_istream<_CharT,_Traits>::operator>>(bool&) [with _CharT = char,_Traits>::__istream_type = std::basic_istream<char>]
  12. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:169:7: note: no known conversion for argument 1 from 'Status' to 'bool&'
  13. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:173:7: note: std::basic_istream<_CharT,_Traits>& std::basic_istream<_CharT,_Traits>::operator>>(short int&) [with _CharT = char,_Traits = std::char_traits<char>]
  14. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:173:7: note: no known conversion for argument 1 from 'Status' to 'short int&'
  15. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:176:7: note: std::basic_istream<_CharT,_Traits>::operator>>(short unsigned int&) [with _CharT = char,_Traits>::__istream_type = std::basic_istream<char>]
  16. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:176:7: note: no known conversion for argument 1 from 'Status' to 'short unsigned int&'
  17. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:180:7: note: std::basic_istream<_CharT,_Traits>::operator>>(int&) [with _CharT = char,_Traits = std::char_traits<char>]
  18. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:180:7: note: no known conversion for argument 1 from 'Status' to 'int&'
  19. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:183:7: note: std::basic_istream<_CharT,_Traits>::operator>>(unsigned int&) [with _CharT = char,_Traits>::__istream_type = std::basic_istream<char>]
  20. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:183:7: note: no known conversion for argument 1 from 'Status' to 'unsigned int&'
  21. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:187:7: note: std::basic_istream<_CharT,_Traits>::operator>>(long int&) [with _CharT = char,_Traits>::__istream_type = std::basic_istream<char>]
  22. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:187:7: note: no known conversion for argument 1 from 'Status' to 'long int&'
  23. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:191:7: note: std::basic_istream<_CharT,_Traits>::operator>>(long unsigned int&) [with _CharT = char,_Traits>::__istream_type = std::basic_istream<char>]
  24. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:191:7: note: no known conversion for argument 1 from 'Status' to 'long unsigned int&'
  25. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:196:7: note: std::basic_istream<_CharT,_Traits>::operator>>(long long int&) [with _CharT = char,_Traits>::__istream_type = std::basic_istream<char>]
  26. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:196:7: note: no known conversion for argument 1 from 'Status' to 'long long int&'
  27. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:200:7: note: std::basic_istream<_CharT,_Traits>::operator>>(long long unsigned int&) [with _CharT = char,_Traits>::__istream_type = std::basic_istream<char>]
  28. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:200:7: note: no known conversion for argument 1 from 'Status' to 'long long unsigned int&'
  29. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:205:7: note: std::basic_istream<_CharT,_Traits>::operator>>(float&) [with _CharT = char,_Traits>::__istream_type = std::basic_istream<char>]
  30. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:205:7: note: no known conversion for argument 1 from 'Status' to 'float&'
  31. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:209:7: note: std::basic_istream<_CharT,_Traits>::operator>>(double&) [with _CharT = char,_Traits>::__istream_type = std::basic_istream<char>]
  32. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:209:7: note: no known conversion for argument 1 from 'Status' to 'double&'
  33. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:213:7: note: std::basic_istream<_CharT,_Traits>::operator>>(long double&) [with _CharT = char,_Traits>::__istream_type = std::basic_istream<char>]
  34. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:213:7: note: no known conversion for argument 1 from 'Status' to 'long double&'
  35. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:217:7: note: std::basic_istream<_CharT,_Traits>::operator>>(void*&) [with _CharT = char,_Traits>::__istream_type = std::basic_istream<char>]
  36. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:217:7: note: no known conversion for argument 1 from 'Status' to 'void*&'
  37. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:241:7: note: std::basic_istream<_CharT,_Traits>::__streambuf_type*) [with _CharT = char,_Traits>::__streambuf_type = std::basic_streambuf<char>]
  38. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:241:7: note: no known conversion for argument 1 from 'Status' to 'std::basic_istream<char>::__streambuf_type* {aka std::basic_streambuf<char>*}'
  39. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/bits/basic_string.tcc:998:5: note: template<class _CharT,class _Traits,class _Alloc> std::basic_istream<_CharT,_Traits>& std::operator>>(std::basic_istream<_CharT,_Traits>&,std::basic_string<_CharT,_Traits,_Alloc>&)
  40. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/bits/istream.tcc:957:5: note: template<class _CharT2,class _Traits2> std::basic_istream<_CharT,_CharT2*)
  41. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/bits/istream.tcc:925:5: note: template<class _CharT,class _Traits> std::basic_istream<_CharT,_CharT&)
  42. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:709:5: note: template<class _Traits> std::basic_istream<char,_Traits>& std::operator>>(std::basic_istream<char,unsigned char&)
  43. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:714:5: note: template<class _Traits> std::basic_istream<char,signed char&)
  44. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:756:5: note: template<class _Traits> std::basic_istream<char,unsigned char*)
  45. c:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/istream:761:5: note: template<class _Traits> std::basic_istream<char,signed char*)
  46. Process terminated with status 1 (0 minutes,0 seconds)
  47. 43 errors,0 warnings

我的代码在哪里出错?
谢谢

解决方法

您不能直接读取枚举值,您将需要一个std :: map将用户输入映射到枚举值.
  1. std::map<std::string,Status> m;
  2. m["In-Active"] = In-Active;
  3. m["Active"] = Active;
  4.  
  5. std::string sstatus;
  6. cin >> sstatus;
  7. Status status = m[sstatus];

猜你在找的C&C++相关文章