问个STL中list的简单问题,高分阿
我看了list的初始化可以带参数,我想初始化一个固定100个元素的list
我在cpp文件中定义了一个
list <int> a(100);
编译通过了
可是我要是把这个定义放到.h文件中,编译就出错了,报:
error C2059: syntax error : 'constant '
我很奇怪,同样的一个定义,放到头文件中怎么就不行了呢?
[解决办法]
应该没有问题,你的编译环境是什么?把代码贴上来,我看看
[解决办法]
头文件里不能申请堆和栈的地址.
可以声明,但不能定义.
可以定义const,static等变量.
[解决办法]
你的.h文件中存在#include <list>
using namespace std;
的语句么现在
[解决办法]
同意ouyh12345(五岭散人).
[解决办法]
list <int> a(100)作为类对象成员,要使用初始化列表的方式进行初始化,也就是在进入构造函数之前进行初始化。
你可以试一下:
list <int> a;//头文件中
你的类构造函数
MyClass():a(100){ }
[解决办法]
#include <list>
using namespace std;
[解决办法]
这是我的头文件 //mmc.h
#include <iostream>
#include <list>
using namespace std;
list <int> a(100);
以下是我的源文件
#include "stdafx.h "
#include <windows.h>
#include "mmc.h "
int main(int argc, char* argv[])
{
a.push_back(2);
return 0;
}
没有任何问题啊!
[解决办法]
头文件里不能申请堆和栈的地址.
可以声明,但不能定义.
可以定义const,static等变量.
==============
头文件可以的,只是需防止重
复所以才一般不在头文件写的
[解决办法]
头文件本身没有什么用,也不会编译,你不信可以自己乱写一个有语法错误的但如果没有源文件引用到它编译也不会有问题,它的唯一作用就是用它的文件体代替在源文件中#include 的地方.所以上一个程序就相当于
#include "stdafx.h "
#include <windows.h>
#include <iostream>
#include <list>
using namespace std;
list <int> a(100);
int main(int argc, char* argv[])
{
//a.push_back(2);
return 0;
}
我猜想你的错误是没有使用std命名空间.
[解决办法]
定義在头文件里的話,因為在.h中不能申请堆和栈的地址
可以声明下,建議不要在.h中寫
[解决办法]
最好不要在 头文件中定义变量,
你可以这样:
h 文件中 extern 声明,
然后在某个 源文件中 定义,
同样可以达到全局的目的 ~
[解决办法]
不过,
这样做也是可以的。
用 Dev C++ 编译你的程序试试 ~
[解决办法]
请不要把变量定义在头文件中
[解决办法]
有时不能完全去分析语法原因,也要考虑你当前的编译环境,编译器不同处理方式不同,有得甚至是编译器BUG引起的,VC6就是有很多BUG,很多语法上分析没有问题,但是编译就是不通过
[解决办法]
不要在 头文件中定义变量,
而且头文件最好加上防止重复include的编译宏
[解决办法]
头文件不参加编译,所以你最好把定义放到源文件里,头文件只保留extern声明
另外,楼主的程序我在VC6上可以无错误的运行,但要把#include "stdafx.h "去掉