当Templated类实例在另一个类中用作成员变量时,期望一个类型说明符

时间:2014-11-10 06:11:53

标签: c++ visual-c++

我有两个A和B类.A是模板类,它有一个带有一个整数参数的构造函数。另一个B类使用带有int模板参数的A实例。现在问题是它在编译程序时说预期类型。

这是程序。

template <typename T>
class A
{
public:
    A(std::size_t max_size)
    {

    }
};

class B
{
    A<int> list(100);
};

我在

中遇到编译问题
A<int> list(100);

线。

提前致谢。

2 个答案:

答案 0 :(得分:1)

更改此

A<int> list(100);
例如

A<int> list<int> li(100); 

i-e提供了一种类型(这里我提到int

答案 1 :(得分:1)

当编译器解析行

A<int> list(100);

它认为您正在尝试声明一个名为list的函数,其返回类型为A<int>。它试图解析parantheses中的内容,以找到参数类型,默认值等。它期望找到一个类型,但它找到一个数字

我猜你打算用:

 A<int> list[100];

list声明为100 A<int> s。

的数组

如果您打算将100用作A<int>的构造函数的参数,则必须使用:

class B
{
    B() : list(100) {}
    A<int> list;
};