YourSurrogateGod
July 12th, 2004, 11:00 AM
#include <iostream>
#include <iomanip>
using namespace std;
template <class T, int element>
class Array
{
public:
void putElement(T x, int index);
T getElement(int index);
int &setgetInteger();
private:
T item[element];
int integer;
};
template <class T, int element>
void Array<T, element>::putElement(T x, int index)
{
item[index] = x;
}
template <class T, int element>
T Array<T, element>::getElement(int index)
{
return item[index];
}
template <class T, int element>
int Array<T, element>::setgetInteger()
{
return integer;
}
int main()
{
char *name[] = {"Meier", "Schulze", "Lehmann", "Aust"};
double contents[]= {2200.5, 1300.5, 1700.30, 4888.80};
Array<char *, 4> nameArray;
Array<double, 4> contentsArray;
nameArray.setgetInteger() = 56;
for(int i = 0; i < 4; i++)
{
nameArray.putElement(name[i], i);
contentsArray.putElement(contents[i], i);
}
for(i = 0; i < 4; i++)
{
cout << setiosflags(ios::left) << setw(10) << nameArray.getElement(i)
<< resetiosflags(ios::left) << setw(8) << contentsArray.getElement(i) << endl;
}
cout << "Integer output: " << nameArray.setgetInteger() << endl;
return 0;
}This doesn't compile because of the setget function that I put in. My question is why can't I make it work with a specific value being returned? Is this a limitation of template classes or something? Sorry for the silly question, I'm just not familiar with this.
#include <iomanip>
using namespace std;
template <class T, int element>
class Array
{
public:
void putElement(T x, int index);
T getElement(int index);
int &setgetInteger();
private:
T item[element];
int integer;
};
template <class T, int element>
void Array<T, element>::putElement(T x, int index)
{
item[index] = x;
}
template <class T, int element>
T Array<T, element>::getElement(int index)
{
return item[index];
}
template <class T, int element>
int Array<T, element>::setgetInteger()
{
return integer;
}
int main()
{
char *name[] = {"Meier", "Schulze", "Lehmann", "Aust"};
double contents[]= {2200.5, 1300.5, 1700.30, 4888.80};
Array<char *, 4> nameArray;
Array<double, 4> contentsArray;
nameArray.setgetInteger() = 56;
for(int i = 0; i < 4; i++)
{
nameArray.putElement(name[i], i);
contentsArray.putElement(contents[i], i);
}
for(i = 0; i < 4; i++)
{
cout << setiosflags(ios::left) << setw(10) << nameArray.getElement(i)
<< resetiosflags(ios::left) << setw(8) << contentsArray.getElement(i) << endl;
}
cout << "Integer output: " << nameArray.setgetInteger() << endl;
return 0;
}This doesn't compile because of the setget function that I put in. My question is why can't I make it work with a specific value being returned? Is this a limitation of template classes or something? Sorry for the silly question, I'm just not familiar with this.