| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 769 人关注过本帖
标题:帮忙看看,为什么没有适当的默认构造函数可利用
只看楼主 加入收藏
qq352320412
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2011-7-12
收藏
 问题点数:0 回复次数:1 
帮忙看看,为什么没有适当的默认构造函数可利用
程序代码:
class CFileSplitter : public CFileDialog
{
    DECLARE_DYNAMIC(CFileSplitter)

public:
    CFileSplitter(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
        LPCTSTR lpszDefExt = NULL,
        LPCTSTR lpszFileName = NULL,
        DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
        LPCTSTR lpszFilter = NULL,
        CWnd* pParentWnd = NULL);
//声明;
public:
    CFileSplitter(
        DWORD dwBlockSize,
        CString strFilePath);
public:
    DWORD m_dwBlockSize;//块大小
    DWORD m_dwFileSize;//文件大小
    CString m_strFilePath;//文件路径
public:
    void Split();//分割文件
    void Join();//合并文件

protected:
    //{{AFX_MSG(CFileSplitter)
        // NOTE - the ClassWizard will add and remove member functions here.
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};
//实现;
CFileSplitter::CFileSplitter(
        DWORD dwBlockSize,
        CString strFilePath)
{
    m_dwBlockSize = dwBlockSize *1024;
    m_dwFileSize = 0;
    m_strFilePath = strFilePath;
}

void CFileSplitter::Split()
{
    //打开文件
    CFile file;
    file.Open(m_strFilePath,                    //文件路径
          CFile::modeRead|CFile::typeBinary);    //以二进制方式读取数据
    //获得文件长度
    this->m_dwFileSize = file.GetLength();
   
    //检测数据合法性
    if(m_dwBlockSize > m_dwFileSize)
    {
        ::MessageBox(NULL,"文件块大小大于文件大小!","错误",MB_OK);
        return;
    }
    //开始分割
    int nFileIndex = 0;
    DWORD offset = 0;
    char buf[4096] = {0};
    char *p = buf;
    CFile fileWriter;
    DWORD dwTempBlockSize = 0;

    //不停的在文件中读取数据
    while(1)
    {
        if(offset == 0)
        {
            //生成文件名
            char szFileName[255] = {0};
            sprintf(szFileName,"%s.%d",m_strFilePath,nFileIndex++);
            //打开文件
            fileWriter.Open(szFileName,
                CFile::modeWrite|CFile::modeCreate|CFile::typeBinary);
        }
       
        //读取数据
        UINT nReadLen;
        if(m_dwBlockSize - offset >= 4096)
        {
            nReadLen = file.Read(buf,4096);
        }
        else
        {
            nReadLen = file.Read(buf,m_dwBlockSize - offset);
        }

        if(nReadLen == 0)
        {
            //文件中没有数据可以读
            fileWriter.Close();
            break;
        }
   
        //写入数据
        fileWriter.Write(buf,nReadLen);
        offset += nReadLen;
       
        if(offset == m_dwBlockSize)
        {
            //关闭文件
            offset = 0;
            fileWriter.Close();
        }
    }

    file.Close();    //关闭文件
}
filesplitter.h(38) : error C2512: 'CFileDialog' : no appropriate default constructor available
为什么提示说,没有适当的默认构造函数可利用
搜索更多相关主题的帖子: 函数 
2011-09-02 07:41
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:0 
explicit CFileDialog(
   BOOL bOpenFileDialog,
   LPCTSTR lpszDefExt = NULL,
   LPCTSTR lpszFileName = NULL,
   DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
   LPCTSTR lpszFilter = NULL,
   CWnd* pParentWnd = NULL,
   DWORD dwSize = 0,
   BOOL bVistaStyle = TRUE
);
2011-09-02 08:20
快速回复:帮忙看看,为什么没有适当的默认构造函数可利用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024787 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved