我使用结构来公开 typesafish 接口(interface),例如:
class IFoo
{
virtual HRESULT bar(struct _BAR * arg) = 0;
}
在幕后,这个接口(interface)的每个实现都定义了自己的结构:
struct _BAR { Baz baz };
我目前以这种方式调用许多分配函数:
HRESULT allocate(Baz ** baz);
_BAR * bar;
ret = allocate( (Baz **) &bar );
是否可以通过在 struct _BAR
定义中添加数据,使用类型更安全的转换调用它们,例如 static_cast
?
最佳答案
正如@Quentin 在评论中提到的,这违反了 ODR(一个定义规则)。我不确定你的目的是什么,但你可以考虑两件事来满足你的需要。一种是使用模板。另一种是使用void *
。但我只是猜测,希望对您有所帮助。
关于c++ - 使用单成员结构作为成员本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53852667/