Thanks for taking the time to read my post in advance.
I am using templates with classes and keep getting LINK error's from visual studio.net. The code is below.
Template.h
Code:
/* Vector.h
* CS-260
*
* This file declares a class called Swap which
* swaps the to variables passed by it.
*/
#include <iostream>
#include <cstring>
using namespace std;
//Base template that will swap the data of two variable passed to it
template <class T>
T swap(const T &a, const T &b)
{
T temp;
&temp = *&a;
*&a = *&b;
*&b = &temp;
}
//Specialized template that swaps variables of type char*
template <class T>
void swap(char*& first, char*& second)
{
char *temp;
strcpy(temp, first);
strcpy(first, second);
strcpy(second, temp);
}
//Class Tripple
template <class T1, class T2, class T3>
class Triple
{
private:
T1 first;
T2 second;
T3 third;
public:
//Constructors
Triple();
Triple(const T1 &a, const T2 &b, const T3 &c);
//Destructor
virtual ~Triple();
//Accessors
void setT1(Triple &lhs, T1 &rhs);
void setT2(Triple &lhs, T2 &rhs);
void setT3(Triple &lhs, T3 &rhs);
//Operators
friend ostream& operator<<(ostream& os, const Triple &rhs)
{
os << rhs.first << "\n"
<< rhs.second << "\n"
<< rhs.third << "\n";
return os;
}
};
Template.cpp
Code:
#include "Vector.h"
//Default Constructor
template <class T1, class T2, class T3>
Triple<T1, T2, T3>::Triple()
{
first = NULL;
second = NULL;
third = NULL;
}
//Initial value contructor
template <class T1, class T2, class T3>
Triple<T1, T2, T3>::Triple(const T1 &a, const T2 &b, const T3 &c)
{
first = a;
second = b;
third = c;
}
//Set member functions
template <class T1, class T2, class T3>
void Triple<T1, T2, T3>::setT1(Triple &lhs, T1 &rhs)
{
lhs.first = T1;
}
template <class T1, class T2, class T3>
void Triple<T1, T2, T3>::setT2(Triple &lhs, T2 &rhs)
{
lhs.second = T2;
}
template <class T1, class T2, class T3>
void Triple<T1, T2, T3>::setT3(Triple &lhs, T3 &rhs)
{
lhs.third = T3;
}
Main.cpp
Code:
#include "Vector.h"
int main()
{
//Test base class
int age = 22;
int income = 50000;
//Print original values
cout << "Age is " << age << "\n"
<< "Income is " << income << "\n\n";
//Swap data of two variables passed
swap(age, income);
//Print new values
cout << "Age is " << age << "\n"
<< "Income is " << income << "\n\n";
// Test specialized class
char *firstName = "Jonathan";
char *lastName = "Antoine";
//Print original values
cout << "My first name is " << firstName << "\n"
<< "My last name is " << lastName << "\n\n";
//Swap data of two variables passed
swap(firstName, lastName);
//Print new values
cout << "My first name is " << firstName << "\n"
<< "My last name is " << lastName << "\n\n";
//Test Triple Class Default constructor
Triple<char*, int, char*> Address1;
char *recipientName = "Jonathan Antoine";
int houseNumber = 53070;
char *streetName = "NW Manor Dr.";
Address1.setT1(Address1, recipientName);
Address1.setT2(Address1, houseNumber);
Address1.setT3(Address1, streetName);
Triple<char*, char*, int> Address2;
char *city = "Scappoose";
char *state = "OR";
int zip = 97056;
Address2.setT1(Address2, city);
Address2.setT2(Address2, state);
Address2.setT3(Address2, zip);
cout << Address1 << "\n" << Address2 << "\n";
}
Thanks again in advance.