C++类内数组赋值失败

不断提示Error 1 error C2536: 'knapsack::knapsack::item' : cannot specify explicit initializer for arrays
但是并没有具体说哪一行。 也没看出来为什么数组那里不能赋予初值。求帮助
错误段代码如下
#include <iostream>
#include <string>
using namespace std;

class item_t
{
public:
string *name;
int weight, value;
item_t();
item_t(string name_0, int weight_0, int value_0);
~item_t();

};

item_t::item_t()
{
*name = "";
weight = 0;
value = 0;
}

item_t::item_t(string name_0, int weight_0, int value_0)
{
*name = name_0;
weight = weight_0;
value = value_0;
}

item_t::~item_t()
{
delete[] name;
}
class knapsack : public item_t, public solution
{
public:

item_t item[22] = {
{ "map", 9, 150 },
{ "compass", 13, 35 },
{ "water", 153, 200 },
{ "sandwich", 50, 160 },
{ "glucose", 15, 60 },
{ "tin", 68, 45 },
{ "banana", 27, 60 },
{ "apple", 39, 40 },
{ "cheese", 23, 30 },
{ "beer", 52, 10 },
{ "suntancream", 11, 70 },
{ "camera", 32, 30 },
{ "T-shirt", 24, 15 },
{ "trousers", 48, 10 },
{ "umbrella", 73, 40 },
{ "waterproof trousers", 42, 70 },
{ "waterproof overclothes", 43, 75 },
{ "note-case", 22, 80 },
{ "sunglasses", 7, 20 },
{ "towel", 18, 12 },
{ "socks", 4, 50 },
{ "book", 30, 10 } };

void optimal(int weight, int idx, solution *s);

const int n_items = sizeof(item) / sizeof(item_t);

};

1.数组赋值因你的item_t为类,所以无法使用{}进行赋值操作

//使用如下方式赋值
item_t item[] = {item_t("map", 9, 150)};

2.在类内不能直接并定义数组,你需要先声明静态成员变量,然后再外部定义

class knapsack : public solution
{
    static item_t item[22];
}

item_t knapsack::item[22] =
{
    item_t("map", 9, 150),
    //其他初始化值
};

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-07-06
1:C++在类中不能直接初始化变量
2:const类型的变量必须在初始化列表初始化
3:类的成员变量item【22】结点为类的对象,类的对象需要通过构造函数的方式初始化,我也不是很清楚直接使用类似于结构体的方式初始化行不行,但是感觉这样根本没有必要
第2个回答  2015-07-06
*name = ""; 这个错了 你指针没指向缓存区 怎么能接受一个字符串 只能接受字符串指针