我在用VC时遇到了这个问题://test.h//
class test
{
private:
...
public:
test(int k=0);
...
};test::test(int k)
{
...
}//x.cpp//
class book
{
private:
test m(10); //此处报错: syntax error: 'constant'
...
public:
...
}
...怎么回事?
class test
{
private:
...
public:
test(int k=0);
...
};test::test(int k)
{
...
}//x.cpp//
class book
{
private:
test m(10); //此处报错: syntax error: 'constant'
...
public:
...
}
...怎么回事?
book::book()
: m(10)
{
}
{
private:
test m;
...
public:
book(int n);
}book::book(int n):m(n)
{}
初始化列表,按如下改正
class book
{
private:
test m; //此处报错: syntax error: 'constant'
...
public:
...
}book::book():m(10)
初始化列表,按如下改正
class book
{
private:
test m; //此处报错: syntax error: 'constant'
...
public:
...
}book::book():m(10)
对于在类中创建的对象成员,要在该类的构造函数中付初值,声明的时候不能赋值。
class book
{
private:
test m;
public:
book():m(10){}; //是定义,不是声明构造函数
}
我想你要的就是这个功能吧!
这样,book类中的成员m(test类的对象)调用test类的构造函数初始化m。
另外,像这样的初始化类成员,要在构造函数的定义时进行,而不是声明时。
所以,上面的代码也可以写成
class book
{
private:
test m;
public:
book():; //声明构造函数
}book::book():m(10) //定义构造函数
{
}
:)
解决办法可在在构造函数中进行
book::book():m(10)
{
private:
test m(10); //此处报错: syntax error: 'constant'
//类里面定义变量不能初始化的啊
//应该这样啊:
test m
...
public:
...
}
{
private:
test m(10);
}