gpt4 book ai didi

C++11 确保原始类型以正确的顺序传递

转载 作者:太空宇宙 更新时间:2023-11-04 15:00:20 24 4
gpt4 key购买 nike

假设我有一个带有 3 个整数参数的构造函数或方法。

对象.h

Object::Object(int alenght, int awidth, int aheight);

有没有办法确保在编译类型时我以正确的顺序传递它们?

int l = 10;
int w = 15;
int h = 5;

主要.cpp

Object myObject(l,w,h); // is correct
Object myObject(w,l,h); // incorrect but compiles

当然,我可以为每个整数创建一个类,但这非常耗时。有没有一种方法,基于模板可能会在编译时产生错误,而不需要为每个整数创建一个类?

最佳答案

在当前版本的 C++ 中,没有什么简单的事情可以做。下一个版本的 C++ 将允许这样的事情:

Object myObject = { .length = 10, .width = 15, .height = 5 };

与此同时,您将不得不使用某种技巧,例如为每个参数定义一个单独的类型,以便编译器可以报告类型不匹配。这是一个代码示例:

struct Object
{
int length, width, height;

struct Length { explicit Length(int x): x(x) {}; int x; };
struct Width { explicit Width(int x): x(x) {}; int x; };
struct Height { explicit Height(int x): x(x) {}; int x; };

Object(Length length, Width width, Height height):
length(length.x), width(width.x), height(height.x)
{}
};

int main()
{
Object obj( Object::Length(10), Object::Width(15), Object::Height(5) );
}

关于C++11 确保原始类型以正确的顺序传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49396800/

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