将接口与实现分离不起作用 c++



嘿,我试图使用将接口与实现分开,但出现错误。不明白出了什么问题。这是我的程序这是错误图像

#include<iostream>
#include"name.h"
using namespace std;
int main()
{
    int x,y;
    cin>>x>>y;
    name n1(x,y);
    n1.getdata(x,y);
    n1.showdata();
}

现在这是创建的头文件

#include<iostream>
using namespace std;
class name{
private:
    int a,b;
public:
    name(int x, int y);
    void getdata(int x, int y);
    int showdata();
};

这是课程的下一部分

#include"name.h"
using namespace std;
name::name(int x, int y)
{
    a=0;
    b=0;
}
void name::getdata(int x,int y)
{
    a=x;
    b=y;
}
void name::showdata()
{
    cout<<a+b;
}

你的代码有很多问题。在这种情况下,最好的建议似乎是阅读一本好C++书。

如果解决了这个问题,以下是按严重性降序排列的问题短列表:

  • name::showdata()声明签名与非尼硫苷不匹配:int showdata()void showdata()
  • 标头缺少包含保护
  • 标头中的using namespace是 100 次中有 99 次的代码异味
  • 标头不需要包含<iostream>,将其包含在实际使用它的实现文件中就足够了。

通过查看您获得的未定义引用,我也猜测name.cpp不是构建的。

我修复了提到的一些要点,只是让它构建: 现场演示

最新更新