0

实际上,我已经成功地使用普通数据类型成功地创建了一个动态分配的数组,但那是前一阵子(比如,六章!)而且我不知道为什么我不能在这里动态设置数组 - 我知道它给了我一个 int 错误,但我不能使用类类型,因为类类型不处理这样的数字。在这一点上,我很困惑。这是我的代码,包括标题:

#include <iostream>
#include "milTime.h"
#include "Time.h"

using namespace std;

int main()
{
milTime *theta;
bool amOrPm;
int milHr, milSc,milM,times;


cout<<"How many times would you like to convert?";
cin>>times;
theta = new milTime;
*theta = times;

这是我的错误:

错误 1 ​​错误 C2440: '=' : 无法从 'int' 转换为 'milTime *' c:\users\heather\documents\visual studio 2012\projects\military time\military time\source.cpp 17 1 Military Time

任何帮助将不胜感激,因为除此之外我已经完全完成了。我和我的聪明想法让它被动态分配!

这是请求的 milTime 类:

#ifndef MILTIME
#define MILTIME

#include <iostream>
#include "Time.h"

class milTime : public Time
{
protected:
int milHours;
int milMins;
int milSeconds;
public:
void setTime(int h)
{
    milHours = h;
}
void setMin(int m)
{
    milMins=m;
}
void setSec(int s)
{
    milSeconds=s;
}
int getmilHours()
{return milHours;}

int getmilMins()
{return milMins;}

int getmilSeconds()
{return milSeconds;} 


bool timeConverter(int mTime, int mMins, int mSecs)
{
    bool aOrPm;
    min = mMins;
    if(mTime<12)
    {
        hour = mTime;
        aOrPm = false;
        //AM will be false.
    }
    else if (mTime>12 && mTime<=24)
    {
        hour = mTime%12+1;
        aOrPm = true;
    }
    sec = mSecs;
    return aOrPm;
}
};
#endif
4

5 回答 5

2

已经有答案为什么你的代码不能工作
,以防万一你想分配一个 milTime 数组,你需要这样做:

theta = new milTime[times];

times这将创建milTime对象

无论如何,你应该使用std::vector而不是动态分配,这更安全

于 2013-05-16T12:45:56.903 回答
1

的定义是milTime什么?

您正在尝试将int一个内置整数类型分配给您自己的类型 milTime。除非您的类型有一个采用int.

你的类型是否有一个构造函数,它需要一个int? 在那种情况下,您会想要更多类似的东西:

theta = new milTime(times);

于 2013-05-16T12:44:01.783 回答
0

theta是一个指针,miltimetimes它是一个int因此*theta = times;失败。

于 2013-05-16T12:43:26.127 回答
0

这是你的问题:

*theta = times;

theta 是 milTime 的一个类,times 是一个 int。

您可能需要在 milTime 中创建一个 setter 方法,如下所示:

theta.setTime( times )

我看不到您的 milTime 课程,您也可以发布吗?

于 2013-05-16T12:43:34.190 回答
0

好吧,似乎在这一行:

*theta = times;

您尝试将 int 分配给milTime. 您可以通过执行以下操作来解决此问题static cast

*theta = static_cast<milTime>(times);

或老派演员:

*theta = (milTime) times;

但是你可以添加一个构造函数到milTime(在 miltime.h 中):

milTime(int i) : someInnerDataWhichIsAnInt(i) {} 

最后一个更可取,因为演员表是结构不良的标志。要使用最后一个,请执行以下操作:

theta = new milTime(times); 

或者是因为你需要一个数组?最好使用:

std::vector<milTimes> theta() // You need to remove prior definition of `theta`.
于 2013-05-16T12:45:50.467 回答