gpt4 book ai didi

c++ - 使用 CRTP 时如何避免错误?

转载 作者:IT老高 更新时间:2023-10-28 22:25:57 24 4
gpt4 key购买 nike

使用 CRTP有时我会写这样的代码:

// this was written first
struct Foo : Base<Foo, ...>
{
...
};

// this was copy-pasted from Foo some days later
struct Bar : Base<Foo, ...>
{
...
};

而且很难理解出了什么问题,直到我在调试器中跟踪代码并发现 Bar 的成员没有在 Base 中使用。

如何在编译时显示这个错误?

(我用的是MSVC2010,所以可以使用一些C++0x特性和MSVC语言扩展)

最佳答案

在 C++0x 中,您有一个简单的解决方案。不过我不知道它是否在 MSVC10 中实现。

template <typename T>
struct base
{
private:
~base() {}
friend T;
};

// Doesn't compile (base class destructor is private)
struct foo : base<bar> { ... };

关于c++ - 使用 CRTP 时如何避免错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4417782/

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