c++ - 为什么这样写是错误的??

【字号: 日期:2023-05-01浏览:10作者:雯心

问题描述

为什么这样写的话,编译器会提示vecsize is not a type

#include <iostream>#include <vector>struct A{ static const int vecSize = 20; static std::vector<double> vec(vecSize);};

但如果改成这样就没问题

#include <iostream>#include <vector>struct A{ static const int vecSize = 20; static std::vector<double> vec;};std::vector<double> A::vec(vecSize);

问题解答

回答1:

因为

std::vector<double> vec(vecSize);

被视做了一个函数签名,返回值为std::vector<double>所以解析vecSize时出错。另外,类里面的静态非字面类型(non-literal type)成员是需要在类外初始化的,这个C++规定的。

回答2:

构造 对象型 成员变量vec 的过程要在构造函数中,不能在声明的时候构造。

相关文章: