将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变量作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章