【问题标题】:error: variable or field 'Palindrome' declared void in c++错误:变量或字段“回文”在 C++ 中声明为 void
【发布时间】:2019-07-07 13:33:50
【问题描述】:

我收到此错误,因此我是 C++ 新手,我无法理解 请帮帮我!!!

我正在写一个回文码 这是下面给出的代码:......

我基本上在这里使用了一些额外的概念,而不是间接的方式。 如果有人可以发布正确的代码,他/她是最受欢迎的......

//palindrome
#include <cstring>  //or use #include <string.h>
#include <iostream>
using namespace std; 

void Palindrom(string& );

void Palindrome(string& word)// same as (const string& word)
{ 
    int n = word.length();
    string word2;
    char reverse[n]; 

 for(int i = 0; i <=n; i++){
        word[i]=tolower(word[i]);
    }
    word2=word; //now both are small

    for(int i = n-1; i >=0; i--){
        reverse[n-1-i]=word2[i];
        cout<<reverse[n-1-i];
    } 


    for(int i =0; i >n; i++){    //printing reversed 
        cout<< " Reverse:  "<<reverse[i]<<endl;
    } 


    // word is ok and word2 gets reversed  

    for (int i = 0; i <= n; i++){ 
       if(word[i]==reverse[i])
       {
           cout<<"\nit is palandrome ";

       }
    cout<<"\nit is not a palindrome ";
    }
}

int main()
{  string k="YuUuy";
   void Palindrome(k);
   return 0;
}

【问题讨论】:

标签: c++ visual-c++ c++14


【解决方案1】:

调用函数的正确语法是 Palindrome(k); 没有 void。

几点说明:

  • 获取good c++ book
  • // same as (const string&amp; word) 不正确。

  • 您没有包含&lt;string&gt; 标头。

  • 最好将std::size_t 用于索引,但请注意unsigned&gt;=0 条件始终为真。
  • char reverse[n]; 错误,n 必须是编译时常量,VLA 不是 C++ 标准的一部分。

【讨论】:

    【解决方案2】:

    函数调用不应有返回类型。将 main() 函数中的 void Palindrome(k); 更改为 Palindrome(k);

    在声明数组时,表达式应该具有常量值。所以你不能使用char reverse[n];。将其更改为char *reverse = new char[n];,并在使用完毕后使用delete[] reverse; 解除分配。

    我建议你使用智能指针。您还应该查看std::string,而不是使用char 的流。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 2013-11-25
      相关资源
      最近更新 更多