我是 C++11 的新手,坦率地说,我已经有一年多没有使用 C++了,所以一开始我有点生疏。我正在从我的旧大学课文中做一些练习,并且在尝试迭代 char 指针字符串时遇到了问题(例如:char * c = "a string";)。我无法在 Google 上找到任何有用的信息。我已经习惯了 Java,foreach 循环可以遍历任何集合。我知道指针是如何工作的,但是我从 C++ 度过的漫长假期让我对实际使用它们的语法一无所知。有人能告诉我为什么下面的代码(特别是 convert() 函数)会导致编译错误,其中说“开始”和“结束”没有在这个范围内声明吗?
Ex12_01_RomanType.h
#ifndef EX12_01_ROMANTYPE_H
#define EX12_01_ROMANTYPE_H
class RomanType {
public:
RomanType();
RomanType(char * n);
virtual ~RomanType();
char * toString();
int getValue();
private:
char * numeral;
int decimal;
void convert();
};
#endif // EX12_01_ROMANTYPE_H
Ex12_01_RomanType.cpp
#include "Ex12_01_RomanType.h"
RomanType::RomanType() {
// Default Constructor
numeral = "I";
decimal = 0;
convert();
}
RomanType::RomanType(char * n) {
// Specific Constructor
numeral = n;
decimal = 0;
convert();
}
RomanType::~RomanType() {
delete numeral;
}
char * RomanType::toString() {
return numeral;
}
int RomanType::getValue() {
return decimal;
}
void RomanType::convert() {
/* Iterates over each character in the numeral string and adds that
character's value to the decimal value. This method should only
be called once during the constructor. */
for(char c : numeral) {
if(c == 'M') decimal += 1000;
else if(c == 'D') decimal += 500;
else if(c == 'C') decimal += 100;
else if(c == 'L') decimal += 50;
else if(c == 'X') decimal += 10;
else if(c == 'V') decimal += 5;
else if(c == 'I') decimal += 1;
else decimal += 0;
}
}
抱歉,如果这个问题对某些人来说似乎很基本。Java 宠坏了我。