我的问题与我之前提出的问题密切相关:
C++ cast raw table to another table type
我在SO上看到过这个警告的不同帖子,但不幸的是他们没有解决我的问题。
简而言之,我想在堆栈上声明一些空间,然后将其用作某种类型T的数组,其中T可以是任何类型(特别是非POD类型),我不能使用C ++ 11。
我尝试使用的两个表的声明是:
char m_rawMemory[sizeof(T) * _size];
T(& m_tabT)[_size];
解决我的问题的建议解决方案是:
union Data {
Data() {}
T values[Size];
} data;
如果不是这样的话会很好,我不能使用C ++ 11,因为我的编译器不支持不受限制的联合(嵌入式环境的程序),因此与POD不同的类型将无法编译。
所以我决定创建一个char表并以下面的方式使用它:
m_tabT(reinterpret_cast<T(&)[_size]>(m_rawMemory)
编译,但在标题中给出警告。所以我的问题是:
为什么我会收到此警告? 如何正确地做到这一点?