2017-08-10 66 views
-2

我正在制作一个程序,用于转换罗马数字并将它们转换为十进制值。我有一个头文件一直给我以下错误:使用“长度”在头文件的For循环中出错C867

错误C3867'std :: basic_string,std :: allocator> :: length':非标准语法;使用“&”创建一个指向成员RomanChar

其中“RomanChar是在Visual Studio项目的名称。出现此错误的for循环中,我创建由于”。长度”部分。

我试着寻找到解决问题的对策,往往问题会涉及加括号的成员或使用一种叫做gcroot这是我一直无法理解。

#include <iostream> 
#include <string> 
using namespace std; 

class RomanClass { //Define class "RomanClass" 
public: 


    void setValue(int x) { 
     Value = x; 
    } 

    int getValue() { 
     return Value; 
    } 

    void setValue(string s) { 

     for (int i = int(s.length) - 1; i >= 0; i--) { 

      if (s[i] == 'M' || 'm') { 
       Value += 1000; 
      } 

      else if (s[i] == 'D' || 'd') { 
       Value += 500; 
      } 

      else if (s[i] == 'C' || 'c') { 
       Value += 100; 
      } 

      else if (s[i] == 'L' || 'l') { 
       Value += 50; 
      } 

      else if (s[i] == 'X' || 'x') { 
       Value += 10; 
      } 

      else if (s[i] == 'V' || 'v') { 
       Value += 5; 
      } 

      else if (s[i] == 'I' || 'i') { 
       Value += 1; 

     } 


    } 

} 

private: 

    int Value = 0; 
}; 

回答

1

s.length应b e s.length()。长度是一个成员函数。