谁能帮忙分析一下这个C++程序错误在哪里
#include"stdafx.h"#include<boost/thread.hpp>#include<stdlib.h>#include<time.h>usingna...
#include "stdafx.h"
#include <boost/thread.hpp>
#include<stdlib.h>
#include <time.h>
using namespace std;
boost::shared_mutex mutx;
boost::shared_lock<boost::shared_mutex>lok(mutx);
boost::condition_variable_any cond;
class resource_one {
prossce_one po;
int savmu;
public:
resource_one(prossce_one& p) : po(p) {}
int random() {
srand((unsigned)time(NULL));
savmu = ((rand() % (9- 0 + 1))+0);
return savmu;
}
void run() {
while (po.status == true) {
random();
po.getmun1(savmu);
}
}
};
class prossce_one {
//result re;
int g1, g2, g3, g4;
public:
bool status;
prossce_one() :g1(0), g2(0), g3(0), g4(0) {}
void getmun1(int x) {
boost::shared_lock<boost::shared_mutex>lok(mutx);
if ((g1 + g2 + g3 + g4) != 6) {
if (x == 4) g1 = x;
else if (x == 2) g2 = x;
}
else status = false;
cond.notify_all;
}
void count() {
boost::shared_lock<boost::shared_mutex>lok(mutx);
while ((g1 + g2 + g3 + g4) != 6)
cond.wait(lok);
g1 = g1 + g2 + g3 + g4;
}
void run() {
count();
}
};
int main()
{
prossce_one po;
resource_one ro (po);
boost::thread thr1(boost::bind(&resource_one::run,&ro));
return 0;
}
error C3646: “po”: 未知重写说明符
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
error C2061: 语法错误: 标识符“prossce_one”
error C2065: “p”: 未声明的标识符
error C2614: “resource_one”: 非法的成员初始化:“po”不是基或成员
error C2065: “po”: 未声明的标识符
error C2228: “.status”的左边必须有类/结构/联合
error C2065: “po”: 未声明的标识符
error C2228: “.getmun1”的左边必须有类/结构/联合
这是提示的错误 不知道怎么改 展开
#include <boost/thread.hpp>
#include<stdlib.h>
#include <time.h>
using namespace std;
boost::shared_mutex mutx;
boost::shared_lock<boost::shared_mutex>lok(mutx);
boost::condition_variable_any cond;
class resource_one {
prossce_one po;
int savmu;
public:
resource_one(prossce_one& p) : po(p) {}
int random() {
srand((unsigned)time(NULL));
savmu = ((rand() % (9- 0 + 1))+0);
return savmu;
}
void run() {
while (po.status == true) {
random();
po.getmun1(savmu);
}
}
};
class prossce_one {
//result re;
int g1, g2, g3, g4;
public:
bool status;
prossce_one() :g1(0), g2(0), g3(0), g4(0) {}
void getmun1(int x) {
boost::shared_lock<boost::shared_mutex>lok(mutx);
if ((g1 + g2 + g3 + g4) != 6) {
if (x == 4) g1 = x;
else if (x == 2) g2 = x;
}
else status = false;
cond.notify_all;
}
void count() {
boost::shared_lock<boost::shared_mutex>lok(mutx);
while ((g1 + g2 + g3 + g4) != 6)
cond.wait(lok);
g1 = g1 + g2 + g3 + g4;
}
void run() {
count();
}
};
int main()
{
prossce_one po;
resource_one ro (po);
boost::thread thr1(boost::bind(&resource_one::run,&ro));
return 0;
}
error C3646: “po”: 未知重写说明符
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
error C2061: 语法错误: 标识符“prossce_one”
error C2065: “p”: 未声明的标识符
error C2614: “resource_one”: 非法的成员初始化:“po”不是基或成员
error C2065: “po”: 未声明的标识符
error C2228: “.status”的左边必须有类/结构/联合
error C2065: “po”: 未声明的标识符
error C2228: “.getmun1”的左边必须有类/结构/联合
这是提示的错误 不知道怎么改 展开
1个回答
展开全部
在resource_one中的
prossce_one po;
这个prossce_one没有提前声明,系统不知道什么类型。
prossce_one po;
这个prossce_one没有提前声明,系统不知道什么类型。
追问
怎样提前声明?
我在class resource_one上面一行增加了一行class resource_one后 提示prossce_one
没定义。而我把prossce_one类换到resource_one上面就好了。我的意思是我自己定义和声明的类要怎么处理才不会出现上面的情况,是要把声明写在头文件里面吗?定义又在哪里?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询