使用"Length"的头文件的 for 循环中的错误 C867

Error C867 Within Header File's For Loop using "Length"

本文关键字:错误 C867 循环 文件 Length 使用 for      更新时间:2023-10-16

我正在制作一个转换罗马数字并将它们转换为十进制值的程序。我有一个头文件,不断给我以下错误:

错误 C3867 'std::basic_string,std::分配器>::length':非标准语法;使用"&"创建指向成员 RomanChar 的指针

其中"RomanChar"是Visual Studio中项目的名称。由于".length"部分,此错误发生在我创建的 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;
};

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