我有一个带有参数化构造函数的类模板。
template <typename value_t>
class A
{
protected:
std::vector<value_t> data;
int n;
public:
A(const int num):n(num) {}
};
我试图以这种方式实例化
class B
{
protected:
A<float> position(256);
public:
B() {}
};
导致MSVC(Visual Studio 2012)中出现以下错误
智能感知:预期类型说明符
有什么想法吗?
答案 0 :(得分:3)
此
A<float> position(256);
应该是
A<float> position{256};
// ^ ^
但我不确定VS2012是否支持此C ++ 11功能......
否则,您可以使用member-initialization-list执行此操作:
class B
{
protected:
A<float> position;
// ^
public:
B() : position(256)
// ^^^^^^^^^^^^^
{}
};
答案 1 :(得分:2)
您需要将参数传递给拥有类的构造函数中的成员构造函数。因此,在您的情况下,您需要将值256
传递给B的构造函数中的position
成员。工作代码如下:
#include <vector>
template <typename value_t>
class A
{
protected:
std::vector<value_t> data;
int n;
public:
A(const int num):n(num)
{}
};
class B
{
protected:
A<float> position;
public:
B() : position(256)
{}
};