C ++:一个类可以用作另一个类中的对象吗?

时间:2014-08-05 20:15:34

标签: c++ class object

我创建了两个类,

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 ++。所以请放轻松。

2 个答案:

答案 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等。