我创建了一个名为“letter”的类:
class Letter
{
char letter{};
bool guessed{ false };
public:
void setLetter(std::string);
};
并且我想创建一个数组“Letter”。数组的大小应为用户输入的字符串的大小,并且如果可能,字符串的每个字母应存储在letter对象的1个元素中。我尝试了以下方法:
std::string word;
Letter test[] = word;
"initialization with {...} expected for aggregate object"
std::string word;
Letter test[word.length()]; // and then iterate through each element of the string
"expression must have a constant value"
编辑:解决了
std::string word;
std::vector<Letter> test;
for (int i = 0; i < word.length(); i++)
{
test[i].setLetter(word[i]);
}
最佳答案
在现代C++中,考虑动态数组时应首先使用的工具是 std::vector
。在这里,您将使用std::vector<Letter>
。在这种情况下,您可以编写std::vector<Letter> test(word.length());
来使包含word.length()
的容器默认构造为Letter
类的实例。std::vector
的行为基本上像一个数组。您可以使用operator[]
以相同的方式访问元素。例如,test[1]
访问第二个元素,无论test
是Letter[]
数组还是std::vector<Letter>
。您还应该熟悉here列出的其他功能。
如果数组的大小不是动态的(在编译时已知),则仍然优选使用 std::array
。 C样式数组在现代C++中几乎没有用例,因此应避免使用新的,更安全的替代方法。
关于c++ - 创建一个基于字符串的Class数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63399302/