微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

错误:ISO C++ 禁止非常量静态成员的类内初始化解决方案::i -Tower Of Hanoi c++

如何解决错误:ISO C++ 禁止非常量静态成员的类内初始化解决方案::i -Tower Of Hanoi c++

河内塔问题: // { 驱动程序代码开始 // C++ 的初始模板

#include <bits/stdc++.h>
using namespace std;

 // } Driver Code Ends
// User function Template for C++

class Solution{
public:
    static int i=0;
    void hanoi(vector<int>& v,int N,int n,int start,int end)
    {
        i++;
        if(i==n)
        {
            v[0]=start;
            v[1]=end;
            return;
        }
        int other=6-(start+end);
        hanoi(v,N-1,n,start,other);
        hanoi(v,other,end);
    }
    vector<int> shiftPile(int N,int n){
        // code here
        Solution::i=0;
        vector<int>v(2,0);
        hanoi(v,N,1,3);
        return v;
    }
};

// { Driver Code Starts.

int main(){
    int t;
    cin>>t;
    while(t--){
        int N,n;
        cin>>N>>n;
        
        Solution ob;
        vector<int> ans = ob.shiftPile(N,n);
        cout<<ans[0]<<" "<<ans[1]<<endl;
    }
    return 0;
}  // } Driver Code Ends

错误出现在类解决方案中,我无法声明它[C++禁止非常量静态成员解决方案::i的类内初始化]。请帮助解决上述问题。

解决方法

声明和定义静态数据成员如

class Solution{
public:
    static int i;
//...
};

int Solution::i = 0;

虽然不清楚为什么使用存储类说明符 static 声明变量 i

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。