草庐IT

c++ - Visual C++ Express 2008 的静态运行时库链接

如何告诉VisualC++Express2008静态链接运行时库而不是动态链接?我的exes目前不能在没有安装某种VS的计算机上运行,​​我很想改变它。:) 最佳答案 抱歉,我没有要测试的VC++Express,但在标准版中,我使用项目属性->配置属性->C/C++->代码生成->运行时库。Dll和DllDebug用于动态链接。 关于c++-VisualC++Express2008的静态运行时库链接,我们在StackOverflow上找到一个类似的问题: ht

c++ - dynamic_cast 是如何工作的?

如果您有以下情况:classAnimal{};classBird:publicAnimal{};classDog:publicAnimal{};classPenguin:publicBird{};classPoodle:publicDog{};dynamic_cast是否只检查一个类是否是另一个类的派生类,或者一个类是否是另一个类的基类?所以如果我有:Bird*bird;Animal*animal;bird=dynamic_cast(bird);animal=dynamic_cast(animal);bird现在将指向一个Animal类,这样我就可以使用bird->some_funct

c++ - dynamic_cast 是如何工作的?

如果您有以下情况:classAnimal{};classBird:publicAnimal{};classDog:publicAnimal{};classPenguin:publicBird{};classPoodle:publicDog{};dynamic_cast是否只检查一个类是否是另一个类的派生类,或者一个类是否是另一个类的基类?所以如果我有:Bird*bird;Animal*animal;bird=dynamic_cast(bird);animal=dynamic_cast(animal);bird现在将指向一个Animal类,这样我就可以使用bird->some_funct

c++ - 如何使用 dynamic_cast 运算符识别失败的强制转换?

ScottMeyer在他的书EffectiveC++中说dynamic_cast用于执行向下或跨继承层次结构的安全转换。也就是说,您使用dynamic_cast将基类对象的指针或引用转换为派生或同级基类对象的指针或引用,这样您就可以确定转换是否成功。失败的转换由空指针(转换指针时)或异常(转换引用时)指示。我想得到两个代码片段,在可以指示转换指针和转换引用的情况下显示失败的转换。 最佳答案 对于指针,这是一个简单的空检查:A*a=newA();B*b=dynamic_cast(a);if(b==NULL){//Castfailed}

c++ - 如何使用 dynamic_cast 运算符识别失败的强制转换?

ScottMeyer在他的书EffectiveC++中说dynamic_cast用于执行向下或跨继承层次结构的安全转换。也就是说,您使用dynamic_cast将基类对象的指针或引用转换为派生或同级基类对象的指针或引用,这样您就可以确定转换是否成功。失败的转换由空指针(转换指针时)或异常(转换引用时)指示。我想得到两个代码片段,在可以指示转换指针和转换引用的情况下显示失败的转换。 最佳答案 对于指针,这是一个简单的空检查:A*a=newA();B*b=dynamic_cast(a);if(b==NULL){//Castfailed}

c++ - 在 linux 中,如何判断我是链接到静态库还是动态库?

我有一个同名的静态库和一个动态库:libclsocket.a和libclsocket.so当我指定要链接的库时,我只需输入-lclsocket作为库。我的程序符合并运行得非常好,但是我使用的是什么库?静态库还是动态库?我想给我的friend我的程序,但我不确定是否需要在发行版中包含这些库。C++、codelite、pcLinuxOS2010 最佳答案 您可以尝试在可执行文件上运行ldd并查看是否根据依赖项列表中的要求检测到随附的.so。ldd手册页是here. 关于c++-在linux中

c++ - 在 linux 中,如何判断我是链接到静态库还是动态库?

我有一个同名的静态库和一个动态库:libclsocket.a和libclsocket.so当我指定要链接的库时,我只需输入-lclsocket作为库。我的程序符合并运行得非常好,但是我使用的是什么库?静态库还是动态库?我想给我的friend我的程序,但我不确定是否需要在发行版中包含这些库。C++、codelite、pcLinuxOS2010 最佳答案 您可以尝试在可执行文件上运行ldd并查看是否根据依赖项列表中的要求检测到随附的.so。ldd手册页是here. 关于c++-在linux中

C++ - 在没有 RTTI/dynamic_cast 的情况下向下转换菱形继承对象

我目前正致力于在非RTTI平台(Android)上集成使用大量RTTI内容的第三方包。基本上,我自己实现了RTTI,但遇到了一个问题。问题是很多类都有菱形继承问题,因为所有类都派生自同一个基类(对象)。所以,如果我想从基类向下转换为派生类,我必须使用dynamic_cast-但RTTI不可用!没有dynamic_cast的虚拟继承时,如何将对象从父对象转换为子对象?看起来是这样的:classA{public:virtualchar*func(){return"A";};};classB:publicvirtualA{public://virtualchar*func(){return"

C++ - 在没有 RTTI/dynamic_cast 的情况下向下转换菱形继承对象

我目前正致力于在非RTTI平台(Android)上集成使用大量RTTI内容的第三方包。基本上,我自己实现了RTTI,但遇到了一个问题。问题是很多类都有菱形继承问题,因为所有类都派生自同一个基类(对象)。所以,如果我想从基类向下转换为派生类,我必须使用dynamic_cast-但RTTI不可用!没有dynamic_cast的虚拟继承时,如何将对象从父对象转换为子对象?看起来是这样的:classA{public:virtualchar*func(){return"A";};};classB:publicvirtualA{public://virtualchar*func(){return"

c++ - dynamic_cast 如何失败?

根据我的阅读,执行错误的运行时dynamic_cast可能会抛出bad_cast异常或返回零。如果你正在转换指针,它会返回零是否正确?即:classBase{virtualvoida(){}};classDerived:publicBase{};intmain(){Base*base=newBase();dynamic_cast(base);return0;}而且它会在转换对象时抛出一个bad_cast异常?即:classBase{virtualvoida(){}};classDerived:publicBase{};intmain(){Basebase;Base&ref=base;d