调试时提示“无法计算表达式”?

weilai1990 2010-06-02 08:51:04
如题,代码如下:

头文件:

#ifndef INFO
#define INFO

struct productInfo
{
productInfo(){machineNum = 0;productAbility = 0; needTime = 0;}
int machineNum;
float productAbility;
float needTime;
};

class Manager
{
public:
Manager();
~Manager();
void inputMessage();
float computeTime();
private:
int total;
int N;
productInfo* info;
};

#endif

源文件:

#include "stdafx.h"
#include "Header.h"

#include <iostream>

using namespace std;

Manager::Manager():N(0),total(0)
{
info = new productInfo[N];
}

Manager::~Manager()
{
delete[] info;
}

void Manager::inputMessage()
{
cout<<"请输入要生产多少件产品:"<<endl;
cin>>total;

cin.clear(); //清除缓存区

cout<<"请输入成品所需的工序数:"<<endl;
cin>>N;

cin.clear(); //清除缓存区

cout<<"共要经过"<<N<<"次工序,请依次输入的机器编号~生产能力 :"<<endl;
for (int i=0; i<N; ++i)
{
cin>>info[i].machineNum>>info[i].productAbility;
}
}

float Manager::computeTime()
{
for (int i=0; i<N; ++i)
{
info[i].needTime = total/info[i].productAbility;
cout<<"第"<<i+1<<"道工序所需的天数为 :"<<info[i].needTime<<endl;
}
return false;
}


int _tmain(int argc, _TCHAR* argv[])
{
Manager* manager = new Manager();
manager->inputMessage();
manager->computeTime();
return 0;
}

我在构造函数里设置断点调试。发现红色标注的这行的 info 的三个形参都提示“无法计算表达式”!

请大家告知,谢谢!
...全文
407 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cao_julians 2010-06-05
  • 打赏
  • 举报
回复

Manager::Manager():N(0),total(0)
{
info = new productInfo[N];
}

改为默认参数形式试试吧
Manager::Manager(int total=0,int N=0)
{
if(N!=0)
info = new productInfo[N];
}
arong1234 2010-06-04
  • 打赏
  • 举报
回复
只有当它不是0时你才能new,也就是说你在构造函数里设N=0没问题,但是不能在N=0的时候new,你只有等N不等于0时再new[Quote=引用 9 楼 weilai1990 的回复:]
怎么会永远是0呢?
我当我输入了为N赋的值,N就不为0了吧?

构造函数只是在类里面负责吧变量初始化吧?
[/Quote]
weilai1990 2010-06-03
  • 打赏
  • 举报
回复
怎么会永远是0呢?
我当我输入了为N赋的值,N就不为0了吧?

构造函数只是在类里面负责吧变量初始化吧?
  • 打赏
  • 举报
回复
构造函数的n永远是0的,所以动态申请数组其实是无效的
  • 打赏
  • 举报
回复
n可以这样写,因为那个数组是动态生成的
weilai1990 2010-06-02
  • 打赏
  • 举报
回复
N初始化为0.不知道能不能这样写,N是一个要输入赋值的形参,请大家指点!
cao_julians 2010-06-02
  • 打赏
  • 举报
回复
Manager::Manager():N(0),total(0)
{
info = new productInfo[N];
}

N=0?
weilai1990 2010-06-02
  • 打赏
  • 举报
回复
不要沉底了,不然没人看到了!
weilai1990 2010-06-02
  • 打赏
  • 举报
回复
开始执行时,N 的值最多可以等于4.大于4就会中断。
为什么这样呢?
weilai1990 2010-06-02
  • 打赏
  • 举报
回复
this->info = new productInfo[N];

依然如此。
arong1234 2010-06-02
  • 打赏
  • 举报
回复
试试this->info

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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