C++动态绑定的问题

亮______亮 2017-09-07 02:28:53
#include "stdafx.h"
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include < iostream>
#include <tchar.h>

#define M_PI 3. 14159265358979323846
using namespace std;

class CFigure
{
public:
virtual char* FigureType() = 0;
virtual double Circumference() = 0;
virtual double Area() = 0;
virtual ~ CFigure(){ }
};

class CTriangle : public CFigure
{
public:
CTriangle()
{
a = b = c = 0;
}
CTriangle(double a, double b, double c) : a(a), b(b), c(c) { }

char* FigureType()
{
return "Triangle";
}
double Circumference()
{
return a + b + c;
}
double Area()
{
double S = Circumference() / 2;
return sqrt(S * (S - a) * (S - b) * (S - c));
}
private:
double a, b, c;
};
class CSquare : public CFigure
{
public:
CSquare()
{
a = 0.0;
b = 0.0;
}
CSquare(double a, double b) : a(a), b(b)
{

}
char* FigureType()
{
return "Square";
}
double Circumference()
{
return 2 * a + 2 * b;
}
double Area()
{
return a * b;
}
private:
double a, b;
};
class CCircle : public CFigure
{
public:
CCircle()
{
r = 0;
}
CCircle( double r) : r( r)
{

}
char* FigureType()
{
return "Circle";
}
double Circumference()
{
return 2 * r * M_PI;
}
double Area()
{
return r * r * M_PI;
}
private:
double r;
};
int _tmain( int argc, _TCHAR* argv[])
{
CFigure* figures[3];
figures[0] = new CTriangle(2. 1, 3. 2, 4. 3);
figures[1] = new CSquare(5. 4, 6. 5);
figures[2] = new CCircle(8. 8);

for (int i = 0; i < 3; i++)
{
cout << "Figure type:\ t" << figures[i]->FigureType()
<< "\nCircumference:\ t" << figures[i]->Circumference()
<< "\nArea:\ t\ t" << figures[i]->Area()
<< endl << endl; }    
return 0;
}


各位老师,报错
错误:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2664 “CTriangle::CTriangle(CTriangle &&)”: 无法将参数 1 从“double”转换为“const CTriangle &” ConsoleApplication1 d:\itteam_2017.07.14\vc\mfc\2\consoleapplication1\consoleapplication1\consoleapplication1.cpp 100
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2664 “CSquare::CSquare(CSquare &&)”: 无法将参数 1 从“double”转换为“const CSquare &” ConsoleApplication1 d:\itteam_2017.07.14\vc\mfc\2\consoleapplication1\consoleapplication1\consoleapplication1.cpp 101
严重性 代码 说明 项目 文件 行 禁止显示状态
警告 C4129 “ ”: 不可识别的字符转义序列 ConsoleApplication1 d:\itteam_2017.07.14\vc\mfc\2\consoleapplication1\consoleapplication1\consoleapplication1.cpp 108


谢谢各位老师
...全文
866 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
draculamx 2018-03-09
  • 打赏
  • 举报
回复
我把你的代码拷贝到vs2013,你猜怎么着?? 其实你所有的小数,在小数点右边都多了一个“空格”。。。。去掉这些空格,就是正确的。。。。
亮______亮 2018-03-02
  • 打赏
  • 举报
回复
谢谢啦。问题已经解决啦
xiaohuh421 2017-09-07
  • 打赏
  • 举报
回复
如果这样解决不了, 说明前面还有其它错误. 请从第一行错误的地方贴全错误信息
xiaohuh421 2017-09-07
  • 打赏
  • 举报
回复
figures[0] = new CTriangle(2.1f, 3.2f, 4.3f); figures[1] = new CSquare(5.4f, 6.5f); figures[2] = new CCircle(8.8f); 这样再试试看

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧