鱼C论坛

 找回密码
 立即注册
查看: 2363|回复: 7

还是C++视频里代码的问题37讲高级强制转换

[复制链接]
发表于 2014-3-30 22:45:23 | 显示全部楼层 |阅读模式
2鱼币
本帖最后由 吃肉的考拉 于 2014-3-31 10:29 编辑

#include <iostream>
#include <string>
class Company
{
public:
Company(std::string theName,std::string product);
virtual void printInfo(); //打印信息
protected:
std::string name;
std::string product;
};
class TeachCompany:public Company
{
public:
TeachCompany(std::string theName,std::string product);
    virtual void printInfo();
};
Company::Company(std::string theName,std::string product)
{
name = theName;
this->product = product;
}
void Company::printInfo()
{
std::cout << "这个公司的名字叫:" << name << ",正在生产"
  << product << std::endl;
}
TeachCompany::TeachCompany(std::string theName,std::string product):Company(theName,product)
{
}
void TeachCompany::printInfo ()
{
std::cout << name << "公司大量生产了" << product << std::endl ;
}
int main()
{
//Company *company = new Company( "Apple" ,"iphone");
Company *company = new TeachCompany( "Apple","iphone");
TeachCompany *teachcompany = dynamic_cast<TeachCompany *>(company); //注意加括号
if(teachcompany != NULL)
{
  std::cout << "OK\n";
}
else
{
  std::cout << "Oh,on\n";
}
// teachcompany->printInfo ();
//两个指针变量指向了同一个地址
delete company;
company = NULL;
teachcompany = NULL;

return 0;
}
代码是我照着视频敲的,看视频是可以执行的,我在VC++6.0里却无法执行

最佳答案

查看完整内容

在VC6.0中使用显示的强制类型dynamic_cast的时候,需要在VC6.0中 进行设置才可以使用,其实这就是所谓的RTTI技术。 设置步骤为: 选择:工程(Project)->设置(Setting)->C++->分类->C++语言-> (勾选)允许时间类型信息(RTTI),然后确定就可以了。 这样你的程序就实现了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-3-30 22:45:24 | 显示全部楼层
在VC6.0中使用显示的强制类型dynamic_cast的时候,需要在VC6.0中
进行设置才可以使用,其实这就是所谓的RTTI技术。
设置步骤为:
        选择:工程(Project)->设置(Setting)->C++->分类->C++语言->
        (勾选)允许时间类型信息(RTTI),然后确定就可以了。
这样你的程序就实现了。
QQ图片20140331095902.jpg
QQ图片20140331095907.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-3-30 23:24:10 | 显示全部楼层
嗯!我的也一样!编译时没有错误,但在运行的时候就中断了!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-3-30 23:55:27 | 显示全部楼层
运行时中断提示的错误是什么?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-3-31 09:17:55 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-3-31 10:29:10 | 显示全部楼层
CL0419 发表于 2014-3-31 09:59
在VC6.0中使用显示的强制类型dynamic_cast的时候,需要在VC6.0中
进行设置才可以使用,其实这就是所谓的RT ...

虽然不太懂你说的那个RTTI技术,但是解决了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-3-31 10:31:27 | 显示全部楼层
青玄 发表于 2014-3-30 23:24
嗯!我的也一样!编译时没有错误,但在运行的时候就中断了!

解决了,你看一下
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-20 08:03:21 | 显示全部楼层
为什么我用c-free 他编译时就会提示两者的类型不同?

代码和上面一样

这个语句不就是转换类型的吗?
我这要把Company 改为TechCompany 才能运行
这语句还有作用吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-6 02:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表