提问者:小点点

将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.

共1个答案

匿名用户

C没有函数重载。 使用单个函数处理这一问题的最简单方法是使用指向buffer的指针和长度:

void Test(Buffer *buffer, size_t length);

使用单个缓冲区调用此函数时:

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

使用std::array调用它时:

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

如果您希望长度参数是可选的,则需要使用两个不同名称的函数,不幸的是:

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

相关问题