gpt4 book ai didi

c++:使用类型安全来区分两个int参数的类型

转载 作者:可可西里 更新时间:2023-11-01 17:38:34 26 4
gpt4 key购买 nike

我有各种带有两个 int 参数的函数(我自己编写函数和调用代码)。恐怕会混淆某些调用中的参数顺序。

如果我使用错误的参数序列(所有参数都是 int)调用函数,我如何使用类型安全让编译器警告我或出错?

我试过 typedefs:Typedef 不会触发任何编译器警告或错误:

typedef int X; typedef int Y; 

void foo(X,Y);

X x; Y y;

foo(y,x); // compiled without warning)

最佳答案

您必须创建包装器类。假设您有两个不同的单位(例如,秒和分钟),它们都表示为整数。您需要类似以下内容才能完全类型安全:

class Minute
{
public:
explicit Minute(int m) : myMinute(m) {}
operator int () const { return myMinute; }

private:
int myMinute;
};

和类似的秒类。显式构造函数可防止您不小心将 int 用作 Minute,但转换运算符允许您在需要 的任何地方使用 Minute >int.

关于c++:使用类型安全来区分两个int参数的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4672998/

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