gpt4 book ai didi

c++ - 在不使用额外类的情况下在 C++ 中实现类型安全

转载 作者:太空狗 更新时间:2023-10-29 22:57:45 25 4
gpt4 key购买 nike

我对类型安全有点熟悉,并且之前在接收多个相同类型 (bool) 参数的方法中成功地使用了它以避免混淆。例如:

// Old version of the method
void sendPackage(bool sendImmediately, bool dividePacket);

// Type safe version
enum SendImmediatelyPreference
{
SEND_IMMEDIATELY,
DO_NOT_SEND_IMMEDIATELY
};

enum PacketDivisionPreference
{
DIVIDE_PACKET,
DO_NOT_DIVIDE_PACKET
};

void sendPackage(
SendImmediateltPreference immediatePref,
PacketDivisionPreference divisionPref);

所以神秘的sendPackage(true, false)变成 sendPackage(SEND_IMMEDIATELY, DO_NOT_DIVIDE_PACKET) .

问题是这只是 bool 的一个选项.我有一个接受多个 std::vector<std::string> 的方法并且我想尽量减少用户以错误的顺序输入参数的可能性。

我可以考虑创建包含 std::vector<std::string> 的不同类要么覆盖大量的 std::vector方法或公开内部 vector 。

有没有更简单的方法,某种强制类型安全的 typedef?使用 boost会好的。

最佳答案

使用命名参数的替代方法怎么样?在 here 中描述的 C++ 中有几种解决此问题的方法.使用元组的标记方法看起来很合理。还有boost parameter .

这不提供强类型安全性,但您可能会争辩说,用户调用错误的构造函数来生成其类型安全对象的可能性与调用您的函数时使用错误标记的可能性一样。如果类型在整个应用程序中使用而不是仅为一个特定功能定义,则这种情况不太可能发生。

另请参阅用于类似目的的 boost strong typedef vs parameter 的讨论 here .

关于c++ - 在不使用额外类的情况下在 C++ 中实现类型安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43091404/

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