代码之家  ›  专栏  ›  技术社区  ›  Tassos

是否可以将“未命名”变量传递给函数?

c++
  •  2
  • Tassos  · 技术社区  · 14 年前

    假设有以下函数:

    void SetTheSize(const SIZE *size) { ... }
    

    有没有办法在不指定SIZE变量的情况下调用该函数?例如。,

    SetTheSize((const SIZE*)&{10, 10});
    

    编辑:

    4 回复  |  直到 14 年前
        1
  •  6
  •   Naveen    14 年前

    void SetTheSize(const SIZE& size); //Change the pointer to const reference
    

    SetTheSize(SIZE(10,10));

        2
  •  1
  •   UncleBens    14 年前

    SetTheSize(&SIZE{10, 10}); 将在C++ 0x中使用改进的初始化语法来工作。

    void SetTheSize(SIZE&&);
    

    void SetTheSize(const Size&);
    

    SetTheSize(Size{10, 10});
    
        3
  •  0
  •   anon anon    14 年前

    虽然可以通过常量引用传递一个临时变量,但不能通过指针来完成。而且您不能创建这样的数组(如果您的语法正试图这样做的话)。所以,不。

        4
  •  0
  •   Ben Voigt    14 年前

    到目前为止,没有一个答案是迂腐的,必须有人去做。其实很简单:

    void SetTheSize(const SIZE *size);
    SIZE const newSize(10, 10);
    SetTheSize(&newSize);
    

    传递给的变量 SetTheSize 确实是一个无名的临时。它是表达式的结果 &newSize 而且有类型 SIZE const*

    如果你想要 SIZE 对象本身是一个未命名的临时对象,而不是传递给 ,这也是可能的:

    void SetTheSize(const SIZE *size);
    SIZE const& newSize = SIZE(10, 10);
    SetTheSize(&newSize);
    

    newSize 是对未命名临时变量的引用。