加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C语言或任何其他语言的可选结构类型可能性?

发布时间:2020-12-16 06:47:35 所属栏目:百科 来源:网络整理
导读:在C中如何告诉编译器Ogre :: Vector3 IS_SAME_AS SomeOtherLIB :: Vector3? 我觉得..在像c这样的语言中,它们不是结构类型,但有时候它是有意义的. 通常作为游戏开发人员使用4个提供排序或自己的Vector3实现的库.代码中充斥着ToOgre,ToThis,ToThat转换功能.这
在C中如何告诉编译器Ogre :: Vector3 IS_SAME_AS SomeOtherLIB :: Vector3?
我觉得..在像c这样的语言中,它们不是结构类型,但有时候它是有意义的.

通常作为游戏开发人员使用4个提供排序或自己的Vector3实现的库.代码中充斥着ToOgre,ToThis,ToThat转换功能.这是很多Float3复制周围不应该发生在第一位.

是C或任何其他语言,我们没有必要转换(复制)从一种类型到另一种类型,这本质上是相同的.但是C中的任何解决方案都是大多数优秀的gamedevs libs都是针对c / c的.

解决方法

如果使用模板,只要在该类型上定义了必要的操作,就可以定义采用任何类型参数的函数.例:

class Foo { void quack() {} };
class Bar { void quack() {} };
class Baz {};

template<typename Duck>
void f(Duck d) {
    d.quack();
}
int main() {
    f(Foo()); // works
    f(Bar()); // works
    f(Baz()); // compile error because Baz does not have a quack method
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读