gpt4 book ai didi

c++ - 如何静态断言多个类的公共(public)属性

转载 作者:太空宇宙 更新时间:2023-11-04 14:51:52 25 4
gpt4 key购买 nike

假设我有 3 个类(class)。我希望每个类的 sizeof() 完全相同——比如 512 字节。

我怎样才能使用像 BOOST_STATIC_ASSERT 这样的东西来应用到所有这些

  1. 我只需要在一个地方使用BOOST_STATIC_ASSERT(DRY 原则)
  2. 在编译时计算一次而不是运行时

注意:我们可以使用我们想要的任何 C++ 技术(创建更多类、使用继承等)

我天真的解决方案如下所示:

class A { ...stuff }; BOOST_STATIC_ASSERT( sizeof(A) == 512 );
class B { ...stuff }; BOOST_STATIC_ASSERT( sizeof(B) == 512 );
class C { ...stuff }; BOOST_STATIC_ASSERT( sizeof(C) == 512 );

最佳答案

这似乎适用于 gcc 4.0.1 和 boost 1.39:


template <typename T, size_t S>
struct enforce_size
{
enforce_size()
{
BOOST_STATIC_ASSERT( sizeof( T ) == S );
}
};

class A: enforce_size<A,512> { /* stuff */ };

关于c++ - 如何静态断言多个类的公共(public)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/913338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com