【发布时间】:2017-02-13 21:05:15
【问题描述】:
我已经尽我所能完成了这项任务,但我很确定存在根本问题。我会期待你的 cmets 如何让它变得更好。问题定义如下:
两班。 XBoxGame 和 WorldPeace。
名为Gift 的模板类。有一种称为shake() 的方法。在shake() 中,我们将在模板类型T 的实例上调用MakeNoise()。只有XBoxGame 有MakeNoise() 作为方法。
现在在main() 中,只要您尝试创建一个包含XBoxGame 的“Gift”(看看我在那里做了什么?)您会在编译时知道它是否有效。尝试Gift<WorldPeace>,它不会编译,因为缺少MakeNoise()。您提交的内容应该只有正确模板化的XBoxGame 类调用shake(),以及一个可以编译的WorldPeace(),但这只是因为它没有在main() 中使用。
最终结果“您只能在礼物中放入一个会发出噪音的课程”。 我写的代码:
#include <iostream>
class XBoxGame
{
void makeNoise(int,int)
{
std::cout << "Is this Working ? ";
};
};
class WorldPeace
{};
template <typename T>
class Gift
{
public:
T shake()
{
void XboxGame::makeNoise();
}
};
主要:
#include "Template.h"
using namespace std;
int main()
{
Gift <XBoxGame> ;
Gift <WorldPeace>;
return 0;
}
【问题讨论】:
标签: c++ templates visual-c++ template-classes