我创建了两个类,
template <typename Object>
class Apple
{
// some definitions
}
class Ball
{
Apple green,red;
//some more definitions
}
我收到错误说,
invalid use of template-name ‘Apple’ without an argument list
是否不能将一个类用作另一个类中的对象?
我几天前刚刚开始使用C ++。所以请放轻松。
答案 0 :(得分:5)
当然,您可以将对象与另一个对象组合,即我们称之为Object Composition。
这里的问题是您已将Apple
声明为模板类,因此需要一种类型进行实例化。
例如:
class Ball
{
Apple<int> green,red; // Note the <int>
//some more definitions
}
声明模板类时,不会将类型声明为新类型,而是(请原谅冗余)模板。因此,对象是实例化类的结果,而类是实例化模板类的结果。
答案 1 :(得分:1)
是的,一个类可以用作另一个类中的对象。但是,您需要确保您的声明是正确的。由于Apple
是模板类,因此当您在Ball
中声明它时,需要将其声明为此类。
此代码:
Apple green, red;
好像Apple
不是模板。但是,由于Apple
是模板,因此您需要使用以下类型声明它:
Apple<type> green, red;
type
可以是您要在Apple
中使用的任何数据类型,例如char,int,double等。