【发布时间】:2020-10-01 14:42:00
【问题描述】:
我需要一个将编译时字符串文字 (const char* const) 作为其唯一构造函数参数的类。
我想要一个 std::array 成员变量将单词存储在这个字符串文字中(例如,使用空格分割)。因此这个数组的大小永远不会改变,因为字符串字面量在编译时是已知的。
如何将这个数组作为成员变量,同时通过传入构造函数的字数指定其大小?
我想让调用者不需要在类模板参数中指定字数,但构造函数(可能是 constexpr 的)可以在编译时推断出这一点。
我不想使用向量,因为在这种情况下没有必要(存储的单词永远不会改变)。我该怎么办?
谢谢
【问题讨论】:
-
你需要展示你到目前为止所做的事情以及你遇到错误的地方。
-
我没有做太多,因为我不知道从哪里开始......我刚刚谷歌搜索但无济于事。
-
你不能这样做。如果您在定义类时不知道大小,则必须使用向量或将类本身作为模板,然后将大小传递给。
-
如果您想将此字符串传递给构造函数,则不是。为了定义类本身,比如
struct foo { std::array<char, some_size> };,你必须知道some_size。您无法在构造函数中更改类的大小,因此无法将其传递给构造函数。 -
字符串文字不是
const char*s;他们是const char[N]s。