阅读:1569回复:11
求教如何解决错误
error C2653: \'CFileAttri\' : is not a class or namespace name
这个问题有如何解决 我明明已经定义了这个类, 可是在写方法 CFileAttri::CFileAttri() { } 的时候却会出现这个问题 |
|
沙发#
发布于:2005-05-11 14:33
你是否没有include声明类的头文件?
|
|
|
板凳#
发布于:2005-05-11 14:37
我有include声明类的头文件啊
还有什么可能? |
|
地板#
发布于:2005-05-11 14:41
要是方便的话,贴出你的代码。
|
|
|
地下室#
发布于: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; } |
|
5楼#
发布于:2005-05-11 14:51
class CFileAttri
{ ... }; 注意这个“;”号!!! |
|
|
6楼#
发布于:2005-05-11 14:59
还是不行
能不能麻烦大大帮我看一下还有那些错误,好象很多耶 |
|
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; } |
|
|
8楼#
发布于:2005-05-11 15:06
CFileAttri::CFileAttri()
{ } 的时候却会出现这个问题 --------------------------------------------- 是不是因为两者同名的缘故 我看到那些 教程上的例子 名字都是不一样的 |
|
9楼#
发布于:2005-05-11 15:15
谢谢了
构造函数和类名应该一样啊 还有问题是在方法体里面使用在头文件里面定义的变量如myFile时编译器居然说这个变量没有定义,为什么 |
|
10楼#
发布于:2005-05-11 15:20
我已经编译通过,你拷贝、粘贴我的代码就行了。
|
|
|
11楼#
发布于:2005-05-11 15:25
搞定了
太感谢了 |
|