Linux C++问题

hittlle 2010-07-05 09:16:42
在写一个日志文件操作的时候, 打算用C++来实现, 然后就碰到了下面这样的问题, 请大虾们指点一二,万分感谢

class Foo{
private:
pthread_mutex_t m_mutex;
pthread_cond_t m_cond;
//other members
public:
Foo();
//other functions
};

//问题就出在构造函数这儿
Foo::Foo():m_mutex(PTHREAD_MUTEX_INITIALIZER), m_cond(PTHREAD_COND_INITIALIZER){

}

这个始终通不过编译,不知道什么原因;一直是用C来实现的,偶尔用次C++,问题百出,等高人解答

...全文
115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hittlle 2010-07-05
  • 打赏
  • 举报
回复
结贴: 刚查了一下PTHREAD_MUTEX_INITIALIZER/PTHTREAD_COND_INITIALIZER 只能用来初始化全局和static型的,杯具了,得动态分配
hittlle 2010-07-05
  • 打赏
  • 举报
回复
gcc version 4.4.3
hittlle 2010-07-05
  • 打赏
  • 举报
回复
错误信息

foo.cpp: 10: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x

这是在ubuntu上的错误信息,我想是不是PTHREAD_MUTEX_INITIALIZER是定义成了某种形式的结构体,静态度的或者其它什么的,在初始化列表中不能这样初始化???
太乙 2010-07-05
  • 打赏
  • 举报
回复
m_mutex(PTHREAD_MUTEX_INITIALIZER), m_cond(PTHREAD_COND_INITIALIZER)


这个不对。。。。构造函数初始化列表不是这么用的。。。
pottichu 2010-07-05
  • 打赏
  • 举报
回复
把错误贴出来看看。
hittlle 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wind_runner 的回复:]
m_mutex(PTHREAD_MUTEX_INITIALIZER), m_cond(PTHREAD_COND_INITIALIZER)

把这两个初始化放入到函数体内试试,就是采用复制赋值的方式试试

不行把错误贴出来看看
[/Quote]

都试过了,还是不行
Wind_Runner 2010-07-05
  • 打赏
  • 举报
回复
m_mutex(PTHREAD_MUTEX_INITIALIZER), m_cond(PTHREAD_COND_INITIALIZER)

把这两个初始化放入到函数体内试试,就是采用复制赋值的方式试试

不行把错误贴出来看看

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧