【问题标题】:Why can't I declare a vector in a .h file?为什么我不能在 .h 文件中声明向量?
【发布时间】:2013-07-14 18:18:11
【问题描述】:

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

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

class bignum{

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

};
#endif

我收到以下错误消息:

  • 例外类型说明符
  • 此声明没有存储类或类型说明符

我错过了什么?

【问题讨论】:

标签: c++


【解决方案1】:

您不能在类声明中调用成员变量的方法。如果要将向量的大小调整为 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;
};

【讨论】:

    【解决方案2】:

    您不能在函数之外调用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;
    };
    

    【讨论】:

    • 我收到错误信息:excepted a ;如果我使用形式 std::vector num{4};
    • @user2351645 你有相关的 C++11 支持吗?显然,你需要那个。
    • 它应该创建一个大小为 4 的向量。据我所知。
    • @user2351645,不,这会创建一个包含一个元素的向量 - 4。
    • @user2351645 我的原始答案有误。我在编辑中修复了它。
    猜你喜欢
    • 2012-02-28
    • 1970-01-01
    • 2016-04-23
    • 2011-01-09
    • 1970-01-01
    • 2023-03-24
    • 2020-11-01
    • 2021-04-11
    • 1970-01-01
    相关资源
    最近更新 更多