我的问题我猜是适用于任何你通过通用指针或转换访问结构的情况。我可以假装我将一个不同类型的对象传递给一个函数吗?
我有一个模板结构:
template <typename T>
struct Buffer
{
T buffer; // <-- These will be various different structs of different data types
// Perhaps some other members
};
一旦我被实例化,我想将它传递给一个函数,这些结构对象之一。我大概知道正确的方法是,使的功能等:
void myFunc(Buffer<T>& buffer);
我的理解是,在我的代码,每次我给另一个缓冲区对象的模板有实例此功能的另一个版本,里面的数据将在每一个不同。我想另一个办法是让一般通过虚拟功能,但我想知道,如果我是做一般的功能:
void myFunc(Buffer<int>& buffer);
假如我是小心的定位及其成员的位置,然后我可以去:
void myFunc(Buffer<int>& buffer)
{
// My buffer is the first member, the type is unknown but its size is known
T or int buffer; // <--- and send this object off somewhere (sending its address?)
}
我可以很容易地做到这一点,但这一切都在我脑海中,我想知道它是否安全。在任何情况下可能都不可取。谢谢。
我不明白这个问题。 –
您是否试图限制/避免某些类型的实例化? – P0W
@Marco。 A.哈哈哈,好的。我完全得到你。 – Zebrafish