Yoc*_*mer 3 c++ struct casting bytearray
我有一个类型的变量Blah.
我想把它投射到char[sizeof(blah)],而不是复制.
我需要类型强制转换为足以实例化期望的模板char[N].
我尝试了很多东西,但我不太明白.
我想要这样的东西正常工作:
class Blah {
int a;
};
template <typename T>
void foo (T& a)
{
//Not an array
}
template <int N>
void foo (char(&a)[N])
{
//an array!
}
Blah b;
foo(b); //not an array
foo((char[sizeofBlah])b); //hopefully treated as an array
Run Code Online (Sandbox Code Playgroud)
Kon*_*lph 10
你无法进行这样的演员表,这是没有意义的.你可以做的就是在地址的对象,并重新诠释的地址作为一个字节地址:
char* const buf = reinterpret_cast<char*>(&obj);
Run Code Online (Sandbox Code Playgroud)
这应该满足您的要求,但要注意使用术语"强制转换char[]",因为它会混淆正在发生的实际操作.
您还可以将地址解释为固定大小缓冲区的起始地址,当然:
using buffer_t = char[sizeof(Blah)];
buffer_t* pbuf = reinterpret_cast<buffer_t*>(&obj);
Run Code Online (Sandbox Code Playgroud)
但请注意,您仍在使用指向缓冲区的指针.
你可以这样做reinterpret_cast<char (&)[sizeof b]>(b),但我不推荐它.
| 归档时间: |
|
| 查看次数: |
7833 次 |
| 最近记录: |