C++ 成员函数的无效使用(你忘记了'()'吗?)

Posted

技术标签:

【中文标题】C++ 成员函数的无效使用(你忘记了\'()\'吗?)【英文标题】:C++ Invalid use Of Member Function (Did You Forget The '()'?)C++ 成员函数的无效使用(你忘记了'()'吗?) 【发布时间】:2014-12-30 21:32:35 【问题描述】:

我无法编译我的程序。错误发生在第 165-177 行。我添加的只是测试字母是否存在,我得到了一个错误,希望你能帮忙! 完整代码http://pastebin.com/embed.php?i=WHrSasYk

(下面附上代码)

do

  cout << "\nCustomer Details:";

  cout << "\n\tCustomer Name:";
  cout << "\n\t\tFirst Name:";
  getline (cin, Cust_FName, '\n');
  if (Quotation::Cust_FName.length() <= 1)
    ValidCustDetails = false;
  else
  
    // Error line 165!
    for (unsigned short i = 0; i <= Cust_FName.length; i++)
      if (!isalpha(Quotation::Cust_FName.at(i)))
        ValidCustDetails = false;
  
  cin.ignore();
  cout << "\t\tLast Name:";
  getline (cin, Cust_LName, '\n');
  if (Cust_LName.length () <= 1)
    ValidCustDetails = false;
  else
  
    // Error line 177!
    for (unsigned short i = 0; i <= Cust_LName.length; i++)
      if (!isalpha(Cust_LName.at(i)))
        ValidCustDetails = false;
  
  cin.ignore();

while(!ValidCustDetails);

【问题讨论】:

【参考方案1】:

这些是你的问题:

for (unsigned short i = 0; i <= Cust_FName.length; i++)
for (unsigned short i = 0; i <= Cust_LName.length; i++)
//                                              ^^

std::string::length 是一个函数,所以你需要用括号调用它:

for (unsigned short i = 0; i <= Cust_FName.length(); i++)
for (unsigned short i = 0; i <= Cust_LName.length(); i++)

【讨论】:

要修复运行时错误,请将&lt;= 替换为&lt;!=【参考方案2】:

我怀疑Cust_LNamestd::string 所以你应该在length 之后添加()

Cust_LName.length()

【讨论】:

以上是关于C++ 成员函数的无效使用(你忘记了'()'吗?)的主要内容,如果未能解决你的问题,请参考以下文章

glReadPixels 成员的无效使用(你忘记了 '&' 吗?)

成员的无效使用(您是不是忘记了«&»?)

错误:非静态成员函数 C++ 的无效使用

C++ freeRTOS 任务,无效使用非静态成员函数

访问父类的成员“非静态数据成员的使用无效”C++

使用嵌套类函数时非静态数据成员的使用无效,但函数未嵌套时可以吗?