标签: pass-by-reference

什么是在函数调用中发送QStrings的最佳方法?

我想知道在QT中将Qstring作为参数发送到函数的最有效和最实用的方法是什么,更具体地说.我想用一个参考.问题是我也想在函数本身中实例化该字符串,例如:

这是函数原型:

void myFunction(QString & theMsg);
Run Code Online (Sandbox Code Playgroud)

这是函数调用:

myFunction(tr("Hello StringWorld"));
Run Code Online (Sandbox Code Playgroud)

现在function tr()返回一个QString,但它不能用于引用(我可以看到原因).

我必须这样做:

QString theQstr("Hello StringWorld"); 
myFunction(theQstr);
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法在仍然使用引用时执行此操作,或者我可以只更改函数参数以使用QString,它仍然有效吗?

string qt pointers pass-by-reference

23
推荐指数
2
解决办法
1万
查看次数

C#通过引用传递属性

无论如何通过引用传递Object的属性?我知道我可以传递整个对象,但是我想指定要设置的对象的属性并检查它的类型,以便我知道如何解析.我应该采取另一种方法(无论如何我都无法改变原始物体)?

public class Foo{
    public Foo(){}
    public int Age { get; set; }
}

private void setFromQueryString(object aProperty, String queryString, HttpContext context)
{
    //here I want to handle pulling the values out of 
    //the query string and parsing them or setting them
    //to null or empty string...
    String valueString = context.Request.QueryString[queryString].ToString(); 

    //I need to check the type of the property that I am setting.

    //this is null so I can't check it's type
    Type t = aProperty.GetType();
}

private void …
Run Code Online (Sandbox Code Playgroud)

.net c# properties pass-by-reference

23
推荐指数
4
解决办法
1万
查看次数

为什么复制构造函数在通过const引用传递临时时被调用?

我将一个未命名的临时对象传递给使用const ref参数定义的函数.该类的副本是私有的,我收到编译错误.我不明白为什么在这种情况下调用复制构造函数.

class A {
public:
  A(int i) {}
private:
  A(const A&) {}
};

void f(const A& a)
{
}

int main()
{
  f(A(1)); // <-- error here: 'A::A(const A&)' is private
}
Run Code Online (Sandbox Code Playgroud)

正如所料,当我将主要更改为:

A a(1);
f(a);
Run Code Online (Sandbox Code Playgroud)

有用.

编辑:编译器是gcc 4.1.2

c++ gcc pass-by-reference copy-constructor

23
推荐指数
2
解决办法
4572
查看次数

在初始化之前通过引用传递的变量p

我有一个Human类,其功能可以接收任意数量的人,并确定某人是否比这些人中的任何人年长,然后返回一个他/她年龄大的人的数组.

func isOlderThan(people: Human...) -> [Human] {
    var p: [Human]

    for person in people {
        if age > person.age {
            p.append(person)
        }
    }
    return p
}
Run Code Online (Sandbox Code Playgroud)

然而在

p.append(person)
Run Code Online (Sandbox Code Playgroud)

我收到了错误

Variable p passed by reference before being initialized
Run Code Online (Sandbox Code Playgroud)

谁知道为什么会这样?谢谢!

pass-by-reference swift

23
推荐指数
1
解决办法
2万
查看次数

如何通过值将变量传递给匿名javascript函数?

目标

我想动态地将事件处理程序分配给整个站点的页面上的某些div.

我的方法

我使用jQuery绑定匿名函数作为选定div事件的处理程序.

问题

代码迭代div名称和相关URL的数组.div名称用于设置绑定目标,即将此事件处理程序附加到此div事件.

当事件处理程序成功绑定到每个div事件时,由这些事件处理程序触发的操作只会定位到数组中的最后一项.

所以我的想法是,如果用户将鼠标放在给定的div上,它应该为该div运行一个滑出动画.但相反,鼠标悬停在div1(rangeTabAll)上会触发div4的滑出动画(rangeTabThm).对于div 2,3等也是如此.顺序并不重要.更改数组元素,事件将始终以数组div4中的最后一个元素为目标.

我的代码 - (使用jQuery)

var curTab, curDiv;
var inlineRangeNavUrls=[['rangeTabAll','range_all.html'],['rangeTabRem','range_remedial.html'],
                ['rangeTabGym','range_gym.html'],['rangeTabThm','range_thermal.html']];
        for (var i=0;i<inlineRangeNavUrls.length;i++)
        {
            curTab=(inlineRangeNavUrls[i][0]).toString();
            curDiv='#' + curTab;
            if  ($(curDiv).length)
            {
                $(curDiv).bind("mouseover", function(){showHideRangeSlidingTabs(curTab, true);} );
                $(curDiv).bind("mouseout", function(){showHideRangeSlidingTabs(curTab, false);} );
            }
        }
Run Code Online (Sandbox Code Playgroud)

我的理论

我要么没有看到一个令人眼花缭乱的语法错误或它的引用问题.最初我有以下语句来设置curTab的值:

curTab=inlineRangeNavUrls[i][0];
Run Code Online (Sandbox Code Playgroud)

因此,当发生问题我计算过,我改变了(通过for循环迭代)的参考curTab,我实际上改变了以前所有的匿名函数事件处理新curTab价值,以及参考....这是为什么事件处理程序始终以最后一个div为目标.

所以我真正需要做的是将curTab 传递给匿名函数事件处理程序而不是curTab 对象引用.

所以我认为:

curTab=(inlineRangeNavUrls[i][0]).toString();
Run Code Online (Sandbox Code Playgroud)

会解决问题,但事实并非如此.同样的交易.所以很明显我错过了关于这个问题的一些关键,也许是非常基本的知识.谢谢.

javascript closures anonymous-function pass-by-reference pass-by-value

22
推荐指数
2
解决办法
2万
查看次数

22
推荐指数
2
解决办法
1万
查看次数

PHP:在str_replace()中"...变量可以通过引用传递"?

我根据我在其他StackOverflow问题中找到的内容,创建了一个函数来打印带有变量的prepared-statement-sql-string .

这是我的代码:

foreach($params as $idx => $param) {
    if ($idx == 0) continue;
    $sql = str_replace('?', "'" . $param . "'", $sql, 1);
}
printError($sql);
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到:Fatal error: Only variables can be passed by reference对于第3行.但是当我使用时

$sql = preg_replace('/\?/', "'" . $param . "'", $sql, 1);

对于第3行,它工作正常.

知道为什么吗?

php pass-by-reference str-replace

22
推荐指数
1
解决办法
1万
查看次数

如何在PHP 5中通过引用传递对象?

在PHP 5中,您是否需要使用&修饰符通过引用传递?例如,

class People() { }
$p = new People();
function one($a) { $a = null; }
function two(&$a) { $a = null; )
Run Code Online (Sandbox Code Playgroud)

在PHP4中,您需要&修改器在进行更改后维护引用,但是我对我读过的关于PHP5自动使用pass-by-reference的主题感到困惑,除非明确克隆对象.

在PHP5中,是否 & 需要通过引用传递所有类型的对象(变量,类,数组......)?

php variables object pass-by-reference

22
推荐指数
1
解决办法
3万
查看次数

21
推荐指数
3
解决办法
3万
查看次数

正确使用Eigen :: Ref <>类

当不需要编写模板函数时,Eigen引入了Ref <>类来编写具有Eigen对象作为参数的函数,而不使用不必要的临时对象.人们可以在这里读到这一点.

当进一步搜索互联网时,我使用Ref <>类找到了几个不同的参数声明.在Eigen文档中,它们const Eigen::Ref<const Eigen::MatrixXf>&用于第一个示例中的只读参数.在第二个例子Eigen::Ref<Eigen::MatrixXd>中引入了读写参数,这里BUT const Eigen::Ref<const Eigen::MatrixXd>用于只读参数(无引用).所以我的问题是:

以下声明和我何时使用它有什么区别?`

  1. const Eigen::Ref<const Eigen::MatrixXd>&
  2. const Eigen::Ref<const Eigen::MatrixXd>
  3. const Eigen::Ref<Eigen::MatrixXd>&
  4. const Eigen::Ref<Eigen::MatrixXd>
  5. Eigen::Ref<const Eigen::MatrixXd>&
  6. Eigen::Ref<const Eigen::MatrixXd>
  7. Eigen::Ref<Eigen::MatrixXd>&
  8. Eigen::Ref<Eigen::MatrixXd>

为了完整性,我列出了const使用和参考的每种可能组合.

c++ parameters pass-by-reference eigen eigen3

21
推荐指数
1
解决办法
4478
查看次数