我正在研究一个程序,它接受一个从0到9999的数字,然后吐出单词值(即13将吐出"十三"等)并且我对数组有一个痛苦某些原因.
到目前为止这是班级:
#include<iostream>
#include<string>
using namespace std;
class Numbers
{
private:
int number;
string lessThan20[ ] = {"zero", "one", "two", "three", "four", "five",
"six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen",
"fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
string incrementsOfTen[ ] = {"twenty", "thirty", "fourty", "fifty", "sixty",
"seventy", "eighty", "ninety"};
string hundred = "hundred";
string thousand = "thousand";
public:
Numbers(int newNumber)
{
setNumber(newNumber);
}
void setNumber(int newNumber)
{
if(newNumber < 0 || newNumber > 9999)
{
cout << "Number cannot be negative or larger than 9999, defaulted to zero." << endl;
number = 0;
}
else
{
number = newNumber;
}
}
int getNumber()
{
return number;
}
};
Run Code Online (Sandbox Code Playgroud)
我的问题出现在两个字符串数组中,我从编译器中得到了这些错误:
1>f:\college work\csis 297\assignment 4\chapter 11-1\chapter 11-1\11-1.cpp(19) : error C2059: syntax error : '{'
1>f:\college work\csis 297\assignment 4\chapter 11-1\chapter 11-1\11-1.cpp(19) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body
1>f:\college work\csis 297\assignment 4\chapter 11-1\chapter 11-1\11-1.cpp(22) : error C2059: syntax error : '{'
1>f:\college work\csis 297\assignment 4\chapter 11-1\chapter 11-1\11-1.cpp(22) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body
1>f:\college work\csis 297\assignment 4\chapter 11-1\chapter 11-1\11-1.cpp(24) : error C2864: 'Numbers::hundred' : only static const integral data members can be initialized within a class
1>f:\college work\csis 297\assignment 4\chapter 11-1\chapter 11-1\11-1.cpp(25) : error C2864: 'Numbers::thousand' : only static const integral data members can be initialized within a class
Run Code Online (Sandbox Code Playgroud)
我敢肯定,如果我花更多的时间在单个变量字符串上我可以解决这些问题,但我花了一个小时的时间来查看我在两个数组上做错了什么,任何建议或信息都会是赞赏.
提前致谢.
PS:不,没有主要的,还没有到达那里,我的程序现在有一个空白主要因为我只是想让这个类现在编译错误.
编辑澄清:
前两个错误在第一个数组上,第二个错误在第二个数组上,最后两个错误在非数组字符串上.
错误消息说明了一切:
只能在类中初始化静态const积分数据成员
你不能做你想要的,你必须分离声明和初始化,并将初始化移动到构造函数,或使用a static const,并将初始化放在类之外.这是首选,因为值实际上不会更改,或取决于实例:
class Numbers
{
private:
static const string lessThan20[];
// …
};
string const Numbers::lessThan20[ ] = {"zero", "one", "two", "three", "four", "five",
"six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen",
"fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
Run Code Online (Sandbox Code Playgroud)
并且类似于其他阵列.
| 归档时间: |
|
| 查看次数: |
1255 次 |
| 最近记录: |