使用“长度”的头文件的 For 循环中出现错误 C867 [重复]
Posted
技术标签:
【中文标题】使用“长度”的头文件的 For 循环中出现错误 C867 [重复]【英文标题】:Error C867 Within Header File's For Loop using "Length" [duplicate] 【发布时间】:2017-08-10 22:16:22 【问题描述】:我正在制作一个转换罗马数字并将它们转换为十进制值的程序。我有一个头文件,不断给我以下错误:
错误 C3867 'std::basic_string,std::allocator>::length':非标准语法;使用 '&' 创建一个指向成员 RomanChar 的指针
其中“RomanChar 是 Visual Studio 中项目的名称。此错误发生在我创建的 for 循环中,原因是“.length”部分。
我已尝试查找此问题的解决方案,但问题通常涉及为成员添加括号或使用我无法理解的名为 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
应该是 s.length()
。长度是一个成员函数。
【讨论】:
以上是关于使用“长度”的头文件的 For 循环中出现错误 C867 [重复]的主要内容,如果未能解决你的问题,请参考以下文章