sailor19840309
驱动牛犊
驱动牛犊
  • 注册日期2005-03-23
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1528回复:11

求教如何解决错误

楼主#
更多 发布于:2005-05-11 14:17
error C2653: \'CFileAttri\' : is not a class or namespace name
这个问题有如何解决

我明明已经定义了这个类,
可是在写方法
CFileAttri::CFileAttri()
{
}
的时候却会出现这个问题
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-11 14:33
你是否没有include声明类的头文件?
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
sailor19840309
驱动牛犊
驱动牛犊
  • 注册日期2005-03-23
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-11 14:37
我有include声明类的头文件啊
还有什么可能?
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-11 14:41
要是方便的话,贴出你的代码。
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
sailor19840309
驱动牛犊
驱动牛犊
  • 注册日期2005-03-23
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-05-11 14:43
#include \"stdafx.h\"
#include <ctime>
#include <stdio.h>
#include <io.h>


typedef struct _FILE_INFO {
char      szFileTitle[128];//文件的标题名
DWORD      dwFileAttributes;//文件的属性
FILETIME   ftCreationTime; //文件的创建时间
FILETIME   ftLastAccessTime;//文件的最后访问时间
FILETIME   ftLastWriteTime; //文件的最后修改时间
DWORD   nFileSizeHigh;   //文件大小的高位双字
DWORD      nFileSizeLow;   //文件大小的低位双字
DWORD      dwReserved0;     //保留,为0
DWORD      dwReserved1;     //保留,为0
} FILE_INFO, *PFILE_INFO;


///////////////////////////
//////CFileAttri类/////////
///////////////////////////
class CFileAttri
{
private:
    CFile myFile,destFile;
    CString CName;
    FILE_INFO  FileInfo;
    WIN32_FIND_DATA  FindFileData;
    FILETIME lpCreationTime; // 文件夹的创建时间
    FILETIME lpLastAccessTime; // 对文件夹的最近访问时间
    FILETIME lpLastWriteTime; // 文件夹的最近修改时间
    FILETIME ftime;
public:
    CFileAttri( );
    FILE_INFO GetAttri(CString CFileName);
    SYSTEMTIME GetDirTime(CString DirName, SYSTEMTIME &stime);
    bool SetDirTime(CString DirName, SYSTEMTIME new_stime);
}

CFileAttri::CFileAttri()
{
}

struct FILE_INFO CFileAttri::GetAttri(CString CFileName)
{  
    CString CName=CFileName;
myFile.Open(CName, CFile::modeReadWrite);
destFile.Open(CName, CFile::modeReadWrite);

//获取文件属性信息
FindClose(FindFirstFile(CName, &FindFileData));
memset(&FileInfo,0,sizeof(FILE_INFO));
//将文件属性信息保存到FileInfo中备用
strcpy(FileInfo.szFileTitle, myFile.GetFileTitle());
FileInfo.dwFileAttributes     =     FindFileData.dwFileAttributes;
FileInfo.ftCreationTime       =     FindFileData.ftCreationTime;
FileInfo.ftLastAccessTime     =    FindFileData.ftLastAccessTime;
FileInfo.ftLastWriteTime      =    FindFileData.ftLastWriteTime;
FileInfo.nFileSizeHigh        =     FindFileData.nFileSizeHigh;
FileInfo.nFileSizeLow         =    FindFileData.nFileSizeLow;
myFile.Close();
destFile.Close();
    return FileInfo;
}
SYSTEMTIME CFileAttri::GetDirTime(CString DirName, SYSTEMTIME &stime)
{
// 打开文件夹
hDir =:: CreateFile (DirName, GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_DELETE,
NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, NULL);

// 获取文件夹时间属性信息
if (GetFileTime(hDir, &lpCreationTime, &lpLastAccessTime, &lpLastWriteTime)){
FileTimeToLocalFileTime(&lpLastWriteTime, &ftime); // 转换成本地时间
FileTimeToSystemTime(&ftime, &stime); // 转换成系统时间格式
}
CloseHandle(hDir); // 关闭打开过的文件夹
return stime;
}

bool CFileAttri::SetDirTime(CString DirName, SYSTEMTIME new_stime){
// 打开目录的Win32 API调用
hDir = CreateFile(DirName, GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_DELETE,
NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, NULL);
SystemTimeToFileTime(&new_stime, &lpCreationTime); // 转换成文件时间格式
SystemTimeToFileTime(&new_stime, &lpLastAccessTime);
SystemTimeToFileTime(&new_stime, &lpLastWriteTime);
// 设置文件夹的时间属性
bool retval = SetFileTime(hDir, &lpCreationTime, &lpLastAccessTime, &lpLastWriteTime);
CloseHandle(hDir); // 关闭文件夹
return retval;
}


 
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-05-11 14:51
class CFileAttri
{
...
};

注意这个“;”号!!!
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
sailor19840309
驱动牛犊
驱动牛犊
  • 注册日期2005-03-23
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-05-11 14:59
还是不行
能不能麻烦大大帮我看一下还有那些错误,好象很多耶
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-05-11 15:04
typedef struct _FILE_INFO {
char szFileTitle[128];//文件的标题名
DWORD dwFileAttributes;//文件的属性
FILETIME ftCreationTime; //文件的创建时间
FILETIME ftLastAccessTime;//文件的最后访问时间
FILETIME ftLastWriteTime; //文件的最后修改时间
DWORD nFileSizeHigh; //文件大小的高位双字
DWORD nFileSizeLow; //文件大小的低位双字
DWORD dwReserved0; //保留,为0
DWORD dwReserved1; //保留,为0
} FILE_INFO, *PFILE_INFO;


///////////////////////////
//////CFileAttri类/////////
///////////////////////////
class CFileAttri
{
private:
CFile myFile,destFile;
CString CName;
FILE_INFO FileInfo;
WIN32_FIND_DATA FindFileData;
FILETIME lpCreationTime; // 文件夹的创建时间
FILETIME lpLastAccessTime; // 对文件夹的最近访问时间
FILETIME lpLastWriteTime; // 文件夹的最近修改时间
FILETIME ftime;
public:
CFileAttri( );
FILE_INFO GetAttri(CString CFileName);
SYSTEMTIME GetDirTime(CString DirName, SYSTEMTIME &stime);
bool SetDirTime(CString DirName, SYSTEMTIME new_stime);
};

CFileAttri::CFileAttri()
{
}

FILE_INFO CFileAttri::GetAttri(CString CFileName)
{
CString CName=CFileName;
myFile.Open(CName, CFile::modeReadWrite);
destFile.Open(CName, CFile::modeReadWrite);

//获取文件属性信息
FindClose(FindFirstFile(CName, &FindFileData));
memset(&FileInfo,0,sizeof(FILE_INFO));
//将文件属性信息保存到FileInfo中备用
strcpy(FileInfo.szFileTitle, myFile.GetFileTitle());
FileInfo.dwFileAttributes = FindFileData.dwFileAttributes;
FileInfo.ftCreationTime = FindFileData.ftCreationTime;
FileInfo.ftLastAccessTime = FindFileData.ftLastAccessTime;
FileInfo.ftLastWriteTime = FindFileData.ftLastWriteTime;
FileInfo.nFileSizeHigh = FindFileData.nFileSizeHigh;
FileInfo.nFileSizeLow = FindFileData.nFileSizeLow;
myFile.Close();
destFile.Close();
return FileInfo;
}
SYSTEMTIME CFileAttri::GetDirTime(CString DirName, SYSTEMTIME &stime)
{
// 打开文件夹
HANDLE hDir;
hDir =:: CreateFile (DirName, GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_DELETE,
NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, NULL);

// 获取文件夹时间属性信息
if (GetFileTime(hDir, &lpCreationTime, &lpLastAccessTime, &lpLastWriteTime)){
FileTimeToLocalFileTime(&lpLastWriteTime, &ftime); // 转换成本地时间
FileTimeToSystemTime(&ftime, &stime); // 转换成系统时间格式
}
CloseHandle(hDir); // 关闭打开过的文件夹
return stime;
}

bool CFileAttri::SetDirTime(CString DirName, SYSTEMTIME new_stime){
// 打开目录的Win32 API调用
HANDLE hDir;
hDir = CreateFile(DirName, GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_DELETE,
NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, NULL);
SystemTimeToFileTime(&new_stime, &lpCreationTime); // 转换成文件时间格式
SystemTimeToFileTime(&new_stime, &lpLastAccessTime);
SystemTimeToFileTime(&new_stime, &lpLastWriteTime);
// 设置文件夹的时间属性
bool retval = SetFileTime(hDir, &lpCreationTime, &lpLastAccessTime, &lpLastWriteTime);
CloseHandle(hDir); // 关闭文件夹
return retval;
}
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
fisheryj
驱动牛犊
驱动牛犊
  • 注册日期2005-03-03
  • 最后登录2009-08-18
  • 粉丝0
  • 关注0
  • 积分64分
  • 威望7点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-05-11 15:06
CFileAttri::CFileAttri()
{
}
的时候却会出现这个问题


---------------------------------------------
是不是因为两者同名的缘故
我看到那些 教程上的例子
名字都是不一样的
sailor19840309
驱动牛犊
驱动牛犊
  • 注册日期2005-03-23
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-05-11 15:15
谢谢了
构造函数和类名应该一样啊
还有问题是在方法体里面使用在头文件里面定义的变量如myFile时编译器居然说这个变量没有定义,为什么
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-05-11 15:20
我已经编译通过,你拷贝、粘贴我的代码就行了。
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
sailor19840309
驱动牛犊
驱动牛犊
  • 注册日期2005-03-23
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-05-11 15:25
搞定了
太感谢了
游客

返回顶部