AlarmTime.h
#pragma oncetypedef struct
{
int year;
int month;
int day;
int wday;
int hour;
int minute;
int second;
}ALARM_TIME;class CAlarmTime : private ALARM_TIME
{
public:
CAlarmTime(void);
virtual ~CAlarmTime(void);
};
AlarmTime.cpp
#include "StdAfx.h"
#include "AlarmTime.h"CAlarmTime::CAlarmTime(void)
{
}CAlarmTime::~CAlarmTime(void)
{
}
AlarmItem.h
#pragma once
#include "AlarmTime.h"#define MAX_ALARM_DATA 128typedef struct
{
ALARM_TIME time;
int code;
int flag;
int level;
char data[MAX_ALARM_DATA];
}ALARM_ITEM;class CAlarmItem : private ALARM_ITEM
{
public:
CAlarmItem(void);
virtual ~CAlarmItem(void);
public:
inline CAlarmTime* GetAlarmTime();
inline int GetCode();
inline void SetCode(int code);
inline int GetFlag();
inline void SetFlag(int flag);
inline int GetLevel();
inline void SetLevel(int level);
inline CString GetData();
inline void SetData(CString data);
};AlarmItem.cpp
#include "StdAfx.h"
#include "AlarmItem.h"CAlarmItem::CAlarmItem(void)
{
}CAlarmItem::~CAlarmItem(void)
{
}CAlarmTime* CAlarmItem::GetAlarmTime()
{ return (CAlarmTime*)&this->time; }int CAlarmItem::GetCode()
{ return this->code; }void CAlarmItem::SetCode(int code)
{ this->code = code; }int CAlarmItem::GetFlag()
{ return this->flag; }void CAlarmItem::SetFlag(int flag)
{ this->flag = flag; }int CAlarmItem::GetLevel()
{ return this->level; }void CAlarmItem::SetLevel(int level)
{ this->level = level; }
使用时,我加入了#include "AlarmItem.h"
在后面的使用如下
CAlarmItem* item;
item = (CAlarmItem*)(ALARM_ITEM*)AlarmData;
item->GetAlarmTime();最后编译错误,GetAlarmTime是无法解析的外部符号,这是什么回事?

解决方案 »

  1.   


    item = (CAlarmItem*)(ALARM_ITEM*)AlarmData;改为 item = (CAlarmItem*)((ALARM_ITEM*)AlarmData);试试
      

  2.   

    CAlarmItem* item;
    item = (CAlarmItem*)(ALARM_ITEM*)AlarmData;
    item->GetAlarmTime();
    ------
    这部分代码是在哪写的?是同一个project么
      

  3.   

    CAlarmItem* item;
    item = (CAlarmItem*)(ALARM_ITEM*)AlarmData;
    item->GetAlarmTime();
    ------
    这部分代码是在哪写的?
      

  4.   

    有种可能是你AlarmItem.h/cpp没有加入到当前的project中,会出现你说的这种情况
      

  5.   

    item = (CAlarmItem*)(ALARM_ITEM*)AlarmData;//AlarmData原始类型是什么?
      

  6.   

    AlarmData是一个byte*来的,不用管这一行,都说了。
      

  7.   

    代码看着没问题
    在别人机器上运行一定编得过,
    你还是合对下加到工程中的.h和cpp的版本吧,一定是你工程的问题
      

  8.   

    先说AlarmItem.h/cpp是你自己之前就在这个工程中写好的么?还是后从别处加到工程中的?
    我猜是后者,如果是前者那我前面的推断就是错误的,你可以忽略掉
      

  9.   

    我在看一个SDK,然写建立工程,写入所需的结构体。晕死~