使用c++成员模板时遇到的编译不通过问题

第一次学习c++成员模板,遇到了编译不通过的问题,我想知道怎么解决

#include <iostream>
using namespace std;
template<class T>
class bate
{
private:
    
    template<class V>
    class hold
    {
    private:
        V val;
    public:
        hold(V v = 0) :val(v) {}
        void show()const { cout << val << endl };
        V Value()const { return val };
    };

        hold<T>q;
        hold<int>n;
public:
        bate(T a,int b):q(a),n(b){}
        void Show() { q.show(); n.show(); }     
};

        void show()const { cout << val << endl };
        V Value()const { return val };
分号在括号里面!
        void show()const { cout << val << endl; }
        V Value()const { return val; }

还有,类的定义不能嵌套

    template<class V>
    class hold
    {
    private:
        V val;
    public:
        hold(V v = 0) :val(v) {}
        void show()const { cout << val << endl };
        V Value()const { return val };
    };

这个要写在class bate定义的前面

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^