c++ - 调用函数并将其设置为等于结构

标签 c++ syntax

有人可以解释第 12 行发生了什么吗?如何将函数设置为等于结构(矩阵);

mat4& getCurrentMatrix() { 
    if(currentMatrixMode == MGL_PROJECTION) {
         return projMatrix;
    }
    else { //Not sure if we need to account for MGL_TEXTURE or MGL_COLOR 
           //yet
        return modelViewMatrix;
    }
}

void setCurrentMatrix(mat4 matrix) {
    getCurrentMatrix() = matrix; //what is going on in here?

最佳答案

您不是将函数设置为等于某个其他对象,而是将函数的结果分配给另一个对象。

如果函数返回某个对象或值(但没有引用),则它没有任何用处(除非 = 运算符被副作用覆盖!),例如在 C 语言中。

但在 C++ 中,您可以返回全局/更高范围对象的引用

它做了一些有用的事情,因为该函数返回对某个全局/更高范围对象的引用,因此它等同于:

modelViewMatrix = matrix;

projMatrix = matrix;

取决于函数的参数

关于c++ - 调用函数并将其设置为等于结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49022167/

相关文章:

c++ - 我如何在 Media Foundation 中正确配置 ASF 媒体接收器

c++ - 对 Visual Basic 6 ListView 的自动化支持

c++ - 参数前的 const 与函数名后的 const C++

Ruby - 意外的 tIDENTtifier,期待 $end

jquery - 如何使此滚动功能在jQuery上起作用?

if-statement - 使用 DO IF 命令从多个变量创建新变量

c++ - 与c++匹配的括号

c++ - 为什么初始化列表不能用作参数?

python - 一种导入具有公共(public) namespace 前缀的许多模块的简洁方法

c# Fluent SQL Helper - 语法改进