为什么不能在.h文件中声明一个向量?

3

我有一个很小的.h文件:

#include "stdafx.h"
#ifndef BIGNUM_H
#define BIGNUM_H
#include <vector>

class bignum{

private:
    std::vector<int> num;
    num.resize(4);

};
#endif

我收到以下错误信息:
  • 期望类型说明符
  • 此声明没有存储类或类型说明符
我缺少什么?

3
向量的声明没问题,但调整大小的方法有误。 - Pixelchemist
可能是在C++头文件中声明向量的重复问题。 - Mgetz
2
@Mgetz,不,这是一个不同的问题。 - awesoon
2个回答

11

在类声明中,您无法在成员变量上调用方法。如果您想将向量扩展到4个,请在类构造函数中执行此操作(或在另一个函数中执行,但构造函数是最好的选择)。

在您的cpp文件中,您可以执行以下操作:

bignum::bignum() { num.resize(4); }
或者:
bignum::bignum(): num(4) {}
第二种方法调用带有大小参数的向量构造函数。或者你可以直接在您的.h文件中这样做:
class bignum{
    bignum(): num(4) {} // version 1
    bignum(): num() { num.resize(4); }  // version 2

private:
    std::vector<int> num;
};

4

你不能在函数外调用num.resize(4);。你可以使用类的构造函数或者C++11初始化来声明。

class bignum
{
private:
    std::vector<int> num = std::vector<int>(4); // C++11
};

class bignum
{
    bignum() : num(4) {} // C++03 and C++11
private:
    std::vector<int> num;
};

我收到了错误信息:期望一个分号;如果我使用表单std::vector<int> num{4}; - erbal
2
@user2351645,你是否有相关的C++11支持?显然你需要它。 - juanchopanza
它应该创建一个大小为4的向量。据我所知。 - erbal
@user2351645,不是的,这会创建一个只有一个元素-4的向量。 - chris
@user2351645,我的原始答案中有一个错误。我在编辑中进行了修正。 - juanchopanza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接