gpt4 book ai didi

c++ - C++ 中的字符串数组无法正常工作?

转载 作者:搜寻专家 更新时间:2023-10-31 00:23:13 26 4
gpt4 key购买 nike

我正在开发一个类(class)程序,它接收 0 到 9999 之间的数字,并吐出单词值(即 13 会被吐出为“十三”,等等)而且我很痛苦数组出于某种原因。

这是目前的类(class):

#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;
}
};

我的问题出在两个字符串数组上,我从我的编译器中得到了这些错误:

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

我敢肯定,如果我花更多时间在单个变量字符串上,我可以弄清楚这些,但我花了一个小时的大部分时间来查找我在两个数组上做错了什么,任何建议或信息将不胜感激。

提前致谢。

PS:不,没有 main,还没有到达那里,我的程序现在有一个空白的 main,因为我只是想让类暂时没有编译错误。

编辑澄清:

前两个错误在第一个数组上,后两个错误在第二个数组上,最后两个错误在非数组字符串上。

最佳答案

错误信息说明了一切:

only static const integral data members can be initialized within a class

你不能为所欲为,你必须将声明和初始化分开,将初始化移到构造函数中,或者使用 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"};

和另一个数组类似。

关于c++ - C++ 中的字符串数组无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2348363/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com