static成员变量不该在构造函数中,不该在头文件中,“你应该在应用程序文件中,类以为的任何位置设定其初值,例如在main之中,或全局函数中,或任何函数之外”
------------------
我的问题是:写程序试了一下,似乎不可以在main中初始化,请大家看看。
class C{
public:
static int m_c;
};
void main()
{
int C::m_c=1; // error C2655: 'm_c' : definition or redeclaration illegal in current scope
}
8 个解决方案
#1
没试过,楼主真是细心啊。呵呵。偶一般放在函数之外
#2
换成这样试一下
void main()
{
C::m_c=1; // error C2655: 'm_c' : definition or redeclaration illegal in current scope
}
void main()
{
C::m_c=1; // error C2655: 'm_c' : definition or redeclaration illegal in current scope
}
#3
类中静态变量初始化要放在类的外面.因为静态变量放在静态存储区,需要在编译时确定.
#4
楼主大大:
你程序是不是写错了?
应该不能又在main主函数中又声明:
int C::m_c=1;????
你程序是不是写错了?
应该不能又在main主函数中又声明:
int C::m_c=1;????
#5
class C{
public:
static int m_c;
};
int C::m_c; //必须加的.
void main()
{
C::m_c=1; //这是设直. 你给的是定义.当然出错了.
}
public:
static int m_c;
};
int C::m_c; //必须加的.
void main()
{
C::m_c=1; //这是设直. 你给的是定义.当然出错了.
}
#6
侯俊杰说,static成员变量实际上是在初始化的时候(而不是在类申明中)才定义出来
但是似乎不能在main中初始化哦。。。。。。。难道他说错了????
但是似乎不能在main中初始化哦。。。。。。。难道他说错了????
#7
class A
{
public:
static int i;
A()
{
}
};
int A::i = 1;
void main()
{
A a;
a.i = 1;
cout<<a.i;
return;
}
{
public:
static int i;
A()
{
}
};
int A::i = 1;
void main()
{
A a;
a.i = 1;
cout<<a.i;
return;
}
#8
类的静态成员是所有实体共享的,这一点要注意
class A
{
public:
static int i;
A()
{
}
};
int A::i = 1;
void main()
{
A a;
A a1;
a.i = 2;
cout<<a.i<<endl;
cout<<a1.i;
return;
}
//输出结果都是2
class A
{
public:
static int i;
A()
{
}
};
int A::i = 1;
void main()
{
A a;
A a1;
a.i = 2;
cout<<a.i<<endl;
cout<<a1.i;
return;
}
//输出结果都是2
#1
没试过,楼主真是细心啊。呵呵。偶一般放在函数之外
#2
换成这样试一下
void main()
{
C::m_c=1; // error C2655: 'm_c' : definition or redeclaration illegal in current scope
}
void main()
{
C::m_c=1; // error C2655: 'm_c' : definition or redeclaration illegal in current scope
}
#3
类中静态变量初始化要放在类的外面.因为静态变量放在静态存储区,需要在编译时确定.
#4
楼主大大:
你程序是不是写错了?
应该不能又在main主函数中又声明:
int C::m_c=1;????
你程序是不是写错了?
应该不能又在main主函数中又声明:
int C::m_c=1;????
#5
class C{
public:
static int m_c;
};
int C::m_c; //必须加的.
void main()
{
C::m_c=1; //这是设直. 你给的是定义.当然出错了.
}
public:
static int m_c;
};
int C::m_c; //必须加的.
void main()
{
C::m_c=1; //这是设直. 你给的是定义.当然出错了.
}
#6
侯俊杰说,static成员变量实际上是在初始化的时候(而不是在类申明中)才定义出来
但是似乎不能在main中初始化哦。。。。。。。难道他说错了????
但是似乎不能在main中初始化哦。。。。。。。难道他说错了????
#7
class A
{
public:
static int i;
A()
{
}
};
int A::i = 1;
void main()
{
A a;
a.i = 1;
cout<<a.i;
return;
}
{
public:
static int i;
A()
{
}
};
int A::i = 1;
void main()
{
A a;
a.i = 1;
cout<<a.i;
return;
}
#8
类的静态成员是所有实体共享的,这一点要注意
class A
{
public:
static int i;
A()
{
}
};
int A::i = 1;
void main()
{
A a;
A a1;
a.i = 2;
cout<<a.i<<endl;
cout<<a1.i;
return;
}
//输出结果都是2
class A
{
public:
static int i;
A()
{
}
};
int A::i = 1;
void main()
{
A a;
A a1;
a.i = 2;
cout<<a.i<<endl;
cout<<a1.i;
return;
}
//输出结果都是2