【发布时间】:2020-04-12 18:45:59
【问题描述】:
我试图初始化一个指针向量,但出现了一些错误,代码和错误都在下面
class tr
{
public:
int n = 26;
vector<tr* > a(n ,NULL);
};
我得到的错误是:
try_class.cpp:7:25: error: ‘n’ is not a type
vector<tr* > a(n ,NULL);
^
try_class.cpp:7:29: error: expected identifier before ‘__null’
vector<tr* > a(n ,NULL);
^~~~
try_class.cpp:7:29: error: expected ‘,’ or ‘...’ before ‘__null’
我无法弄清楚我的代码有什么问题
【问题讨论】:
-
在类中初始化内联成员时不能使用括号,因为这将用于声明函数。使用“赋值”语法(就像使用
n一样)或使用花括号{}(这在使用std::vector的情况下是不可能的)。或者作为替代方案,创建一个构造函数并在构造函数成员初始化列表中初始化向量。 -
在一个稍微相关的说明中,推荐的“空指针”是
nullptr或普通的0。而对于指针,这是默认值,因此在初始化向量时根本不需要指定它,只需指定大小即可。 -
一个类,它自身包含一个容器,该容器带有指向它自己的指针... ...听起来像一棵树。在我看来,在这种情况下,您似乎可以使用
std::array而不是std::vector。 -
您实际上想要达到什么目的?也许一开始就使用向量是错误的。
-
n不仅用作向量的大小吗?你真的需要它作为一个单独的成员变量吗?也许应该是static?也许应该是const或constexpr?