吃肉的考拉 发表于 2014-3-30 22:45:23

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

本帖最后由 吃肉的考拉 于 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里却无法执行

CL0419 发表于 2014-3-30 22:45:24

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

青玄 发表于 2014-3-30 23:24:10

嗯!我的也一样!编译时没有错误,但在运行的时候就中断了!

lurning 发表于 2014-3-30 23:55:27

运行时中断提示的错误是什么?

吃肉的考拉 发表于 2014-3-31 09:17:55

lurning 发表于 2014-3-30 23:55 static/image/common/back.gif
运行时中断提示的错误是什么?

吃肉的考拉 发表于 2014-3-31 10:29:10

CL0419 发表于 2014-3-31 09:59 static/image/common/back.gif
在VC6.0中使用显示的强制类型dynamic_cast的时候,需要在VC6.0中
进行设置才可以使用,其实这就是所谓的RT ...

虽然不太懂你说的那个RTTI技术,但是解决了

吃肉的考拉 发表于 2014-3-31 10:31:27

青玄 发表于 2014-3-30 23:24 static/image/common/back.gif
嗯!我的也一样!编译时没有错误,但在运行的时候就中断了!

解决了,你看一下

ISHEEPI 发表于 2020-6-20 08:03:21

为什么我用c-free 他编译时就会提示两者的类型不同?

代码和上面一样

这个语句不就是转换类型的吗?
我这要把Company 改为TechCompany 才能运行
这语句还有作用吗?
页: [1]
查看完整版本: 还是C++视频里代码的问题37讲高级强制转换