我尝试在按钮功能中调用HuffmanTree1.CreateHfmTree(char Str,int m,int n);
。当运行它时,给我错误C2143:语法错误:缺少“;” (在“。”之前)。
它是翻译的语法错误:缺少“;”(在“。”的前面)
我的代码如下:
void CHuffmanTreeDlg::OnBnClickedButton1()
{ // TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if (m_radio1=1)
{
char*pszFileName="C:\C++\HuffmanTree\HuffmanTree\WData.txt";
CStdioFile myFile;
CFileException fileException;
if(myFile.Open(pszFileName,CFile::modeCreate|CFile::typeText|CFile::modeReadWrite),&fileException)
{ AfxMessageBox("打开成功");
myFile.SeekToBegin();
CString str1;
myFile.ReadString(str1);
CString str2;
AfxMessageBox(str1+str2);
ifstream ifs("WData.txt");
ofstream ofs("WCode.txt");
char str[1000];
char Str[100];
int i=0,j,m[100],h,k=0;
int n=0;
char ch;
while(ifs.get(ch))
{
if(ch!='\n')
{str[n++]=ch;}
for(i=0;i<n;i++)
{
j=0;h=0;
while(str[i]!=str[j])
j++;
if(j==i)
{
Str[k]=str[i];
}
else
continue;
for(j=i;j<n;j++)
{
if(str[i]==str[j])
h++;
}
m[k]=h;
k++;
}
HuffmanTree1.CreateHfmTree(char Str,int m,int n);
cin.get();
m_length=n;
m_string1="报文的编码已经保存在WCode.txt";
UpdateData(FALSE);
}
}
else
{
TRACE("Can't open file%s,error=%u\n",pszFileName,fileException.m_cause);
}
myFile.Close();
}
}
感谢您的帮助:D
答案 0 :(得分:3)
这一行:
HuffmanTree1.CreateHfmTree(char Str,int m,int n);
很奇怪。它或多或少是函数声明,但缺少返回类型。它不是对函数的调用;你没有列出类型。如果您正在尝试调用函数,请删除char
和两个int
,然后重命名其他参数。我没有看到代码可以使用的类变量HuffmanTree1
- 这使得它成为全局变量,或者在此函数之外定义的变量。你确定这是一个很好的界面设计吗?将值传递给参数中的函数通常比使用“全局”变量更好。
答案 1 :(得分:1)
您是要尝试调用该函数还是声明它?无论哪种方式,在函数名中都有一个句点是无效的,除非你有一个名为HuffmanTree1的变量引用具有这个成员函数的类。