CS35 Edge Class

edge.h
#pragma once
/* Copyright (c) 2018
   Swarthmore College Computer Science Department, Swarthmore PA
   A. Danner, M. Gagne, J. Brody, Z. Palmer, A. Soni, L. Meeden
   Distributed as course material for Spring 2018
   CPSC 035: Data Structures and Algorithms
 */
 
/**
 * An Edge is a class that represents a directed, weighted edge in a graph.
 * It is templated on three types.
 * @tparam V a type to represent the vertex labels
 * @tparam E a type to represent the edge labels
 * @tparam W a type to represent the weight (usually an int, float, or double)
 */
template <typename V, typename E, typename W>
class Edge {
public:
    Edge(V source, V destination, E label, W weight = 1);

    E getLabel() { return label; }
    V getSource() { return source; }
    V getDestination() { return dest; }
    W getWeight() {return weight; }

private:
   V source;
   V dest;
   W weight;
   E label;

};

template <typename V, typename E, typename W>
Edge<V,E,W>::Edge(V source, V dest, E label, W weight) {
    source = source;
    label = label;
    weight = weight;
    dest = dest;
}