请高手帮小弟我看下这段代码的有关问题该如何解决

请高手帮我看下这段代码的问题该怎么解决
小弟最近在学graph,试写了一段代码,准备测试一下书上介绍的几种算法,谁知出师未捷身先死,创建的类居然没能通过编译。。。请高手帮我指点一下,并给出解决方案。以下是代码:

vertex.h:
#ifndef VERTEX_H
#define VERTEX_H

#include<iostream>

template<class T>
class vertex
{
public:
vertex(const T& s = T()):self(s), parent(T()), color('W'), vtime(0), ftime(0){};
void setSelf(T s) {self = s;}
void setParent(T p) {parent = p;}
void setColor(char c) {color = c;}
void setVtime(int t) {vtime = t;}
void setFtime(int t) {ftime = t;}
T getSelf() {return self;} const
T getParent() {return parent;} const
char getColor() {return color;} const
int getVtime() {return vtime;} const
int getFtime() {return ftime;} const
        
        //错误提示在这里:
bool operator < (const vertex<T>& v) const {return (self < v.getSelf());
bool operator == (const vertex<T>& v) const  {return (self == v.getSelf());}

private: 
T self;
T parent;
char color;
int vtime;
int ftime;
};


template<class T>
std::ostream& operator << (std::ostream& str, vertex<T>& v)
{
return str << v.getSelf();
}




#endif


graphTest.cpp
#include<iostream>
#include<set>
#include"vertex.h"

using namespace std;

int main()
{
vertex<char> v1 = vertex<char>('C');
vertex<char> v2 = vertex<char>('B');
vertex<char> v3 = vertex<char>('A');
vertex<char> v4 = vertex<char>('c');
vertex<char> v5 = vertex<char>('b');
vertex<char> v6 = vertex<char>('a');


set<vertex<char>> s1;

s1.insert(v1);
s1.insert(v2);
s1.insert(v3);
s1.insert(v4);
s1.insert(v5);
s1.insert(v6);

set<vertex<char>>::iterator iter = s1.begin();

vertex<char> v;

while (iter != s1.end())
{
v = *iter;
cout << v << endl;
iter++;
}

return 0;
}


错误提示内容:
vertex.h(21): error C2662: 'vertex<T>::getSelf' : cannot convert 'this' pointer from 'const vertex<T>' to 'vertex<T> &'
c++ graph 算法

------解决方案--------------------

T getSelf()const {return self;} 
T getParent() const {return parent;}
char getColor()const {return color;}
int getVtime()const {return vtime;} 
int getFtime()const {return ftime;} 

const 应该在“)”之后而不是在大括号之后
------解决方案--------------------