首页 > 解决方案 > 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

标签: c++inheritance

解决方案


推荐阅读