作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这最初是通过尝试从 unique_ptr 中提取类型而产生的,结果证明这很容易。但是,我现在对一般情况感兴趣。
这是我正在寻找的:
template<class CHILDOBJ>
void MyChildFunc()
{
// do stuff with the CHILDOBJ type
};
template<class OBJTYPE>
void MyFunc(OBJTYPE obj)
{
MyChildFunc<TYPE of OBJTYPE::child????>();
};
struct MyIntStruct
{
int child;
};
struct MyDoubleStruct
{
double child;
};
void main(void)
{
MyIntStruct int_struct;
MyDoubleStruct double_struct;
MyFunc(int_struct);
MyFunc(double_struct);
}
因此,我想要一种使用传入 MyFunc 的对象的属性类型来调用 MyChildFunc 的方法。我知道我可以创建另一个模板函数,并将 obj.child 传递给它以允许推导,但我希望有一种方法可以手动推导类型,并直接在模板参数中使用它。
正如我所说,这现在比实际更学术,这就是代码如此做作的原因,但我很想知道是否有办法做到这一点。
最佳答案
怎么样:
template<class CHILDOBJ>
void MyChildFunc()
{
// do stuff with the CHILDOBJ type
};
template<class OBJTYPE>
void MyFunc(OBJTYPE obj)
{
MyChildFunc<decltype(OBJTYPE::child) >();
};
struct MyIntStruct
{
int child;
};
struct MyDoubleStruct
{
double child;
};
int main(int argc, const char * argv[])
{
MyIntStruct int_struct;
MyDoubleStruct double_struct;
MyFunc(int_struct);
MyFunc(double_struct);
return 0;
}
我用 Xcode 6 编译了它,它似乎可以按预期工作。
关于c++ - 获取模板中变量的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26879021/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!