【发布时间】:2017-12-13 09:25:10
【问题描述】:
我是抽象类的新手,所以请原谅任何无知的错误
练习是我学校给的,所以要用main.cpp文件,差不多就这样
我正在尝试使用 C++11 在 Eclipse 中创建一个简单的计算器
存在一个带有两个虚方法的简单抽象类。
这两个派生类就是“Result”和“Const”类。 这是抽象类的头文件,名为
表达式.h
class Expression
{
public:
Expression();
virtual ~Expression();
//methods
};
以下是Expression的源文件
表达式.cpp
#include "expression.h"
#include <iostream>
Expression::Expression(){}
Expression::~Expression(){}
然后我创建了两个名为 Const 和 Result 的类
常量.h
#include <iostream>
#include "expression.h"
class Const : public Expression
{
public:
Const(int value);
//inherited methods
private:
int value;
};
和源文件
常量.cpp
#include "expression.h"
#include "Const.h"
Const::Const(int x)
{
value=x;
};
//inherited methods
结果.h
#include <iostream>
#include "expression.h"
#include "Const.h"
class Result : public Expression
{
public:
Result(Const& c);
//inherited methods
private:
double value;
};
结果.cpp
#include "expression.h"
#include "Result.h"
Result::Result(Const& c)
{
value=c.point;
};
//inherited methods
所以我需要理解
main.cpp
#include <iostream>
#include "expression.h"
#include "const.h"
#include "result.h"
void testResult()
{
Result res (new Const(4));
//Here an inherited method will be used to print the contents of object res
}
int main()
{
testResult();
return 0;
}
我不能解决的问题是线
Result res (new Const(4));
我得到的错误是
请求从“Const*”转换为非标量类型“Result”
问题是这行中描述的内容应该按原样使用,我似乎无法找到确切的内容。
编辑
由于我的错,首先提出的问题显然具有误导性,试图解决这个问题以便准确描述我的问题
【问题讨论】:
-
尝试提供minimal reproducible example,这样不仅可以让其他人阅读,还可以帮助您找到问题的根源
标签: c++11 inheritance polymorphism operator-overloading new-operator