将std :: array变量作为参数传递

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将std :: array变量作为参数传递相关的知识,希望对你有一定的参考价值。

我需要帮助来解决我面临的问题。

我希望有一个函数原型,它可以在两个实例上接受两种不同类型的参数。

例如如下所示:我有一个如下所示的结构:

         typedef struct BufferStruct
         {
            unsigned long    BufferType;
            unsigned long    TheAddress;
          } Buffer;

我有一个名为Test的函数,该函数应接受两种不同类型的参数

  1) std::array<Buffer, 2> axBuffer; 
  2) Buffer axBuffer;

   void Test(??)/* function argument ?*/

 These are C functions and not C++.

 Can someone please help me in getting the appropriate function prototype for the function named "Test"?

 Advanced thanks.
答案

C没有函数重载。使用单个函数解决此问题的最简单方法是获取指向Buffer的指针和一个长度:

void Test(Buffer *buffer, size_t length);

使用单个Buffer调用此功能时:

Buffer buf = ...;
Test(&buf, 1);

[使用std::array调用时:

std::array<Buffer, 2> buffers = ...;
Test(buffers.data(), buffers.size());

不幸的是,如果您希望length参数是可选的,那么您有两个使用两个名称不同的函数:

void TestOne(Buffer *);
void TestMany(Buffer *, size_t);

以上是关于将std :: array变量作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章

如何将浮点矩阵作为 2D 纹理传递给片段着色器?

在C代码中将结构体变量作为参数传递效率忒低

临时变量作为非const的引用进行参数传递引发的编译错误

如何将constexpr作为函数参数传递c ++ [重复]

如何将 std::map 作为默认构造函数参数传递

传递变量作为函数参数时由于隐式铸造导致的精度损失