c++ - c++中的继承问题
问题描述
我有继承问题。
我有 7 个文件:main.cpp、Utils.h、Utils.cpp、Loader.h、Loader.cpp、Calculation.h 和 Calculation.cpp。
Utils.h 继承自 Loader.h 和 Calculation.h 并且
Loader.h 继承自 Calculation.h。
1:main.cpp
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include "Utils.h"
using namespace std;
int main()
{
Utils Tool;
Tool.Test();
return 0;
}
2:实用程序.h
#ifndef UTILS_H_INCLUDED
#define UTILS_H_INCLUDED
#include <stdio.h>
#include <stdlib.h>
#include "Calculation.h"
#include "Loader.h"
class Utils:public Loader,public Calculation
{
public:
Utils();
void Test();
~Utils();
};
#endif // UTILS_H_INCLUDED
3:实用程序.cpp
#include "Utils.h"
Utils::Utils():Calculation(),Loader()
{
}
void Utils::Test()
{
printf("Hello World\n");
int a=10,b=10;
printf("Result is: %d\n",Add(a,b));
Func();
}
Utils::~Utils()
{
}
4:加载器.h
#ifndef LOADER_H_INCLUDED
#define LOADER_H_INCLUDED
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include "Calculation.h"
class Loader:public Calculation
{
public:
Loader();
void Func();
~Loader();
};
5:加载器.cpp
#include "Loader.h"
Loader::Loader():Calculation()
{
}
void Loader::Func()
{
printf("Great Loader\n");
}
Loader::~Loader()
{
}
6:计算.h
#ifndef CALCULATION_H_INCLUDED
#define CALCULATION_H_INCLUDED
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
class Calculation
{
public:
Calculation();
int Add(int a,int b);
~Calculation();
};
#endif //CALCULATION_H_INCLUDED
7:计算.cpp
#include "Calculation.h"
Calculation::Calculation()
{
}
int Calculation::Add(int a,int b)
{
return a+b;
}
Calculation::~Calculation()
{
}
当我尝试编译代码时它失败了。我收到一条错误消息:
C:\Users\MY_NAME\Documents\CodeBlocksProj\Inheritance_Test\Utils.cpp: In member function 'void Utils::Test()':
C:\Users\MY_NAME\Documents\CodeBlocksProj\Inheritance_Test\Utils.cpp:18:31: error: reference to 'Add' is ambiguous
解决方案
推荐阅读
- java - 如何在自包含应用 JavaFX .deb (Debian) 包上设置安装路径
- python-3.x - 如何在 Google Colab 笔记本中解压缩非常大的 zip 文件(>6gb)?
- php - PHP/MySQL - 如何证明用户编辑了一个值而不是管理员
- angularjs - schemaform 将用户输入添加到模式数组
- php - WordPress,检索当前正在编辑的用户个人资料页面的 ID
- javascript - 单击函数从不读取 else 语句以删除类
- java - Java - 基于文件扩展名获取图标
- perl - 使用 Perl 或 Powershell,如何比较 2 个 CSV 文件并仅获取新行?
- c# - 将 SQL 查询结果格式化为电子邮件正文 (SMTP) C# 控制台应用程序
- azure - Azure AD B2C 页面 UI 自定义不支持 Bootstrap 吗?