你如何在c ++中正确创建/传递引用参数?

时间:2013-07-23 22:41:00

标签: c++ pass-by-reference

对于我的c ++赋值,我只需要创建一个'char',打印它,然后将它作为参考传递给函数,修改它,然后重新打印以证明它已被更改。这似乎很容易,而且我可能犯了一个非常愚蠢的错误,但我不断收到一个错误,上面写着“未解决的外部因素”。我已经制作了一个.cpp文件,并在我的头文件中声明了一个类。

我的.cpp文件:

#include <iostream>
#include <fstream>
#include "referenceshw.h"

using namespace std;

int main(){

    char s = 's';
    char& s1 = s;
    Ref test;

    std::cout << s <<endl;
    test.modify(s);

}

void modify(char& s1){

    s1 = 'd';
    std::cout << s1 <<endl;
    std::cout << s <<endl;

}

我的标题文件:

#ifndef _REFERENCESHW_H
#define _REFERENCESHW_H

class Ref{

    public:
        char s;

void modify (char);

};

#endif

2 个答案:

答案 0 :(得分:2)

你的签名功能不匹配,在你的.h中你有:

void modify (char);

和.cpp

void modify(char& s1){

只需添加&amp;在char之后,在.h

另外,因为函数是在类声明之外定义的,所以需要在.cpp中的modify之前添加Ref ::。最后你的.cpp应该是这样的:

void Ref::modify(char& s1){

和你的.h

void modify(char&);

答案 1 :(得分:0)

Borgleader是对的。其他错误:改变

void modify(char& s1)

void Ref::modify(char& s1);

另外,您是否尝试在modify()?

中引用代码中的类成员s1
s1 = 'd'; // this will change the parameter that was passed in, 
          // is that what you want?