関数の引数の参照が良く分らないのですが、
とりあえず全ての引数に&を付けておくと良いでしょうか?

void func(int &i, double &d, std::string &str)
{
 // ...
}

void main()
{
 int i;
 double d;
 std::string str;
 func(i, d, str);
}