gpt4 book ai didi

c++ - 获取变量类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:14 28 4
gpt4 key购买 nike

如果我没理解错的话,在多态中typeid可以确定实际的类型,而typeof则不能。

他们的return是不是也有不同的用途:typeof的return作为type关键字可以定义变量,而typeid的return不可以?

有没有办法既获取多态性的实际类型又使用 return as type 关键字来定义另一个变量?我希望从一个指向基类的指针得到派生类的类型,并定义一个派生类的变量或指针。像这样的东西:

baseclass *p = new derivedclass  
typexxx(*p) *pp = dynamic_cast<typexxx(*p) *> (p);
// would like to convert the pointer from pointing to a base class
// to its derived class

非常感谢!

最佳答案

c++0x将有 decltype 可以像这样使用:

int someInt;
decltype(someInt) otherIntegerVariable = 5;

但不幸的是,对于普通的老式 C++,不可以。

我认为 decltype 也不会真正有多大帮助,因为您需要多态类型,而不是声明的类型。做你想做的最直接的方法是尝试动态转换为特定类型并检查 NULL

struct A {
virtual ~A() {}
};
struct B : public A {};
struct C : public A {};

int main() {
A* x = new C;
if(B* b_ptr = dynamic_cast<B*>(x)) {
// it's a B
} else if(C* c_ptr = dynamic_cast<C*>(x)) {
// it's a C
}
}

关于c++ - 获取变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1987286/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com