0

对于我的 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
4

2 回答 2

2

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

void modify (char);

并在 .cpp

void modify(char& s1){

只需在 .h 中的 char 之后添加 &

此外,由于该函数是在类声明之外定义的,因此您需要在 .cpp 中的 modify 前面添加 Ref::。最后在您的 .cpp 中应该如下所示:

void Ref::modify(char& s1){

在你的 .h

void modify(char&);
于 2013-07-23T22:42:40.550 回答
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?
于 2013-07-23T22:55:11.660 回答