簡體   English   中英

c ++ 11在類定義中為可變大小的std :: array創建數據成員

[英]c++11 Creating data member for variable-size std::array in class definition

我對std :: array感到有些困惑,並將其傳遞給不同的類。 我想定義一個在其構造函數中接受std :: array的類,並使用該類來設置成員變量。 但是,由於數組可能具有可變大小,因此我不確定如何將其轉換為類和成員變量聲明。 例如:

// array_param.h
#include <array>

class ArrayParam
{
  public:
    //constructor?
    ArrayParam(std::array<long, ?>& entries);

    // member variable?
    std::array<long, ?> param_entries;
};

...和...

// array_param.cpp
#include "array_param.h"

ArrayParam::ArrayParam(std::array<long, ?>& entries)
{
  param_entries = entries;
}

這樣做的動機是,例如,在我的主程序中,我有兩個或多個定義良好且已知大小固定的數組。 我想對這些大小不同的數組執行相同的操作,因此需要一個此類來處理任何大小的數組的這些共享操作。

非常感謝您的任何幫助,非常感謝!

必須在編譯時知道std::array的大小。 由於您提到數組的大小是已知的固定大小,因此可以將數組大小設為模板參數。

// array_param.h
#include <array>
#include <cstdlib>

template<std::size_t N>
class ArrayParam
{
  public:
    //constructor?
    ArrayParam(std::array<long, N>& entries);

    // member variable?
    std::array<long, N> param_entries;
};

需要在編譯時知道std::array的長度。

如果不是,請考慮改用std::vector

來自http://www.cplusplus.com/reference/array/array/

數組除了包含的元素外不保留其他任何數據(甚至不包括其大小(它是模板參數, 固定在編譯時 ))。

基於此, ArrayParam類可能沒有太多用處。 我會考慮例如typedef的特定類型的數組

enum { ArrayLength = 1024 };
typedef std::array< long, ArrayLength >   LongArray;

// use and test
LongArray myArray;
assert( myArray.size() == ArrayLength );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM