w*******t 发帖数: 62 | 1 看到careercup上关于纸牌游戏设计,有如下一段Java代码,想问C++有没有对应的?
public class Deck {
...
}
C++有没有对应的,比如:
tempalte {
...
}
多谢1! |
g*****k 发帖数: 623 | 2 Why you need such template in the first place?
To instantiate Deck for different concrete Card classes doesn't make much
sense.
【在 w*******t 的大作中提到】 : 看到careercup上关于纸牌游戏设计,有如下一段Java代码,想问C++有没有对应的? : public class Deck { : ... : } : C++有没有对应的,比如: : tempalte { : ... : } : 多谢1!
|
w*******t 发帖数: 62 | 3 因为想要生成一副blackjack的牌或者一副其他游戏的牌 |
r****t 发帖数: 10904 | 4 不同牌用不同虚方法实现,deck 只是 a deck of general cards.
【在 w*******t 的大作中提到】 : 因为想要生成一副blackjack的牌或者一副其他游戏的牌
|
w*******t 发帖数: 62 | 5 所以想用template来编写general的deck |
r****t 发帖数: 10904 | 6 你言行不一啊,你说想用template来编写general的deck,但是你写的是用template来
编写特定的 deck. 对后者 c++ 里面用 partial specialization
【在 w*******t 的大作中提到】 : 所以想用template来编写general的deck
|
f*******n 发帖数: 12623 | 7 C++的templates是基本上duck-typing的。不需要什么 T extends Card 的。直接写
template class Deck { ... }
就行了。你里面可以用Card的method。跟着如果你后来用一个没有那些method的class
作为T的话,就会初compile error了。 |
w*******t 发帖数: 62 | 8 我开始是这么想的,就直接写T。后来想到子类的虚函数调用,一下子糊涂了。
其实直接写T,然后静态实例化时,子类类型确定,会调用其相应的函数,包括虚函数。
多谢楼上各位! |
t****t 发帖数: 6806 | 9 this is actually called "concept" and was supposed to be added to c++11.
however the committee decided to exclude it eventually.
数。
【在 w*******t 的大作中提到】 : 我开始是这么想的,就直接写T。后来想到子类的虚函数调用,一下子糊涂了。 : 其实直接写T,然后静态实例化时,子类类型确定,会调用其相应的函数,包括虚函数。 : 多谢楼上各位!
|
f*******n 发帖数: 12623 | 10 虚函数是用pointer或reference的时候才有作用的。
【在 w*******t 的大作中提到】 : 我开始是这么想的,就直接写T。后来想到子类的虚函数调用,一下子糊涂了。 : 其实直接写T,然后静态实例化时,子类类型确定,会调用其相应的函数,包括虚函数。 : 多谢楼上各位!
|