2011-07-08 23 views
0

请您帮助我用C++中的这个简单代码,我不知道这里有什么问题?C++问题,错误C2064:术语不会评估为带1个参数的函数

#include <iostream> 
#include <string> 
using namespace::std; 
template <class Type> 
Type binsearch (Type item,Type *table,Type n) 
{ 
    int bot=0; 
    int top=n-1; 
    int mid, cmp; 
    while (bot<= top) 
    { 
     mid=(bot+top)/2; 
     if(item==table(mid)) 
      return (mid); 
     else if (item <table[mid]) 
      top=mid-1; 
     else 
      bot=mid+1; 
    } 
    return -1; 
} 

int main() 
{ 

    int nums[]={10, 12, 30, 38, 52, 100}; 
    cout<< binsearch(52, nums, 6); 
} 
+0

后至少是错误的,并在那里出现 –

+0

@NAIEM:我建议你开始学习如何处理从错误消息中的信息。编译器可能告诉了你问题的确切位置,这应该限制了搜索。如果您仍然无法理解该行发生了什么,请发布一个问题,但不要忘记提供编译器给您的完整信息(即行号)(在行中添加一条注释,报告错误:'' //编译器错误或者类似的东西) –

回答

1

table(mid)应该是table[mid]

0
if(item==table(mid)) 

应该

if(item==table[mid]) //notice square brackets [] 
      ^^
+0

非常感谢 – NAIEM

1

它必须是 if(item==table[mid])

if(item==table(mid)) 
1

问题是,您很难将[(混淆。取而代之的

--- 
mid=(bot+top)/2; 
if(item==table(mid)) 
    return (mid); 
--- 

你需要

+++ 
mid=(bot+top)/2; 
if(item==table[mid]) 
    return (mid); 
+++ 
相关问题