I am having problems with my operators that I have overloaded. My current program is probably too long to post here and if i did post it all i doubt anyone would look at it. So I'll just post the errors and some sections of code that might be useful. Thank you in advance for the help. The errors I get are:
"card.h", line 27.14: 1540-1184 (S) Wrong number of parameters for "operator>".
a4main.cpp:
"card.h", line 27.14: 1540-1184 (S) Wrong number of parameters for "operator>".
"a4main.cpp", line 457.8: 1540-0218 (S) The call does not match any parameter list for "operator!".
"a4main.cpp", line 457.8: 1540-1283 (I) "builtin operator!(bool)" is not a viable candidate.

Here are my operators
For the CARD CLASS:
Code:
bool operator!(){
		bool test = false;
		if (this.value == JOKER)
			test = true;
		return test;
	}
	bool operator > (const Card& left, const Card& right){
		bool test = false;
		if (left.value == right.value){
			if (left.suit > right.suit)
				test = true;
		}
		else if (left.value > right.value)
			test = true
		return test;
	}

	bool operator < (const Card& left, const Card& right){
		bool test = false;
		if (right.value == left.value){
			if (right.suit > left.suit)
				test = true;
		}
		else if (right.value > left.value)
			test = true;
		return test;
	}
For the PLAY CLASS:
Code:
	bool operator!(){
		bool test = false;
		if (this.play = 0)
			test = true;
		return test;
	}
	bool operator > (const Play& left, const Play& right){
		bool test = false;
		if (left.play == 0 && right.play == 0){
			if (left.numofcards > right.numofcards)
				test = true;
		}
		if (left.play != 0 && right.play == 0)
			test = true;
		if (left.play != 0 && right.play != 0){
			if (left.numofcards > right.numofcards)
				test = true;
			if (left.numofcards == 1 && right.numofcards == 1){
				if(left.card[0].Face() > right.card[0].Face())
					test = true;
				else if (left.card[0].Face() = right.card[0].Face()){
					if (left.card[0].Suit() > right.card[0].Suit())
						test = true;
				}
			}
			if (left.numofcards == 2 && right.numofcards == 2){
				if (left.card[1].Face() > right.card[1].Face())
					test = true;
				else if (left.card[1].Face() == right.card[1].Face()){
					if (left.card[1].Suit() > right.card[1].Suit())
						test = true;
				}
			}
			if (left.numofcards == 3 && right.numofcards == 3){
				if (left.card[2].Face() > right.card[2].Face())
					test = true;
				else if (left.card[2].Face() == right.card[2].Face()){
					if (left.card[2].Suit() > right.card[2].Suit())
						test = true;
				}
			}
			if (left.numofcards == 4 && right.numofcards == 4){
				if (left.card[3].Face() > right.card[3].Face())
					test = true;
				else if (left.card[3].Face() == right.card[3].Face()){
					if (left.card[3].Suit() > right.card[3].Suit())
						test = true;
				}
			}
			if (left.numofcards == 5 && right.numofcards == 5){
				if (left.play == 5){
					if (right.play < 5)
						test = true;
				}
				if (left.play == 6){
					if (right.play < 6)
						test = true;
				}
				if (left.play == 7){
					if (right.play < 7)
						test = true;
				}
				if (left.play == 8){
					if (right.play < 8 || right.play == 9)
						test = true;
				}
				if (left.play == 9){
					if (right.play < 8)
						test = true;
				}
			}
		}
	}

	bool operator < (const Play& left, const Play& right){
		bool test = false;
		if (right.play == 0 && left.play == 0){
			if (right.numofcards > left.numofcards)
				test = true;
		}
		if (right.play != 0 && left.play == 0)
			test = true;
		if (right.play != 0 && left.play != 0){
			if (right.numofcards > left.numofcards)
				test = true;
			if (right.numofcards == 1 && left.numofcards == 1){
				if(right.card[0].Face() > left.card[0].Face())
					test = true;
				else if (right.card[0].Face() = left.card[0].Face()){
					if (right.card[0].Suit() > left.card[0].Suit())
						test = true;
				}
			}
			if (right.numofcards == 2 && left.numofcards == 2){
				if (right.card[1].Face() > left.card[1].Face())
					test = true;
				else if (right.card[1].Face() == left.card[1].Face()){
					if (right.card[1].Suit() > left.card[1].Suit())
						test = true;
				}
			}
			if (right.numofcards == 3 && left.numofcards == 3){
				if (right.card[2].Face() > left.card[2].Face())
					test = true;
				else if (right.card[2].Face() == left.card[2].Face()){
					if (right.card[2].Suit() > left.card[2].Suit())
						test = true;
					}
				}
				if (right.numofcards == 4 && left.numofcards == 4){
					if (right.card[3].Face() > left.card[3].Face())
						test = true;
					else if (right.card[3].Face() == left.card[3].Face()){
						if (right.card[3].Suit() > left.card[3].Suit())
							test = true;
					}
				}
				if (right.numofcards == 5 && left.numofcards == 5){
					if (right.play == 5){
						if (left.play < 5)
							test = true;
					}
					if (right.play == 6){
						if (left.play < 6)
							test = true;
					}
					if (right.play == 7){
						if (left.play < 7)
							test = true;
					}
					if (right.play == 8){
						if (left.play < 8 || left.play == 9)
							test = true;
					}
					if (right.play == 9){
						if (left.play < 8)
							test = true;
					}
				}
		}
	}

And this is where the operators are being tested in the testmain
Code:
/*Test Card's > operator.  Passed array that holds every card in a deck,
  an array that holds which tests failed and a reference to what test
  number we are on.  returns true if all tests passed
  false otherwise*/
bool TestCardGreater(Card deck[],int failedtests[],int& testnumber){
  bool passmain=true;
  int k=0;
  cout << "Testing Card's > operator" << endl;
  for(int i=0;i<52;i+=4){
    for(int j=2;j<52;j+=4){
      if(i!=j){
	if(( !GREATERTHAN1[k]&& (deck[i] > deck[j])) ||
	  (GREATERTHAN1[k] && !(deck[i] > deck[j]))){
	  failedtests[testnumber]=1;
	  passmain=false;
#if VERBOSE==1
	  cout << "Card's > operator test failed." << endl;
	  cout << "Your program reported that " << deck[i].Face() << deck[i].Suit();
	  cout << " > " << deck[j].Face() << deck[j].Suit() << endl << endl;
#endif
	}
	k++;
	testnumber++;
      }
    }
  }
  return passmain;
}
/*Test Card's < operator.  Passed array that holds every card in a deck,
  an array that holds which tests failed and a reference to what test
  number we are on.  returns true if all tests passed
  false otherwise*/
bool TestCardLesser(Card deck[],int failedtests[],int& testnumber){
  cout << "Testing Card's < operator" << endl;
  bool passmain=true;
  int k=0;
  for(int i=0;i<52;i+=4){
    for(int j=2;j<52;j+=4){
      if(i!=j){
	if(( LESSTHAN1[k]&& !(deck[i] < deck[j])) ||
	    (!LESSTHAN1[k] && (deck[i] < deck[j]))){
	  failedtests[testnumber]=1;
	  passmain=false;
#if VERBOSE==1
	  cout << "Card's < operator test failed." << endl;
	  cout << "Your program reported that " << deck[i].Face() << deck[i].Suit();
	  cout << " < " << deck[j].Face() << deck[j].Suit() << endl << endl;
#endif
	}
	testnumber++;
	k++;
      }
    }
  }
  return passmain;
}
/*Tests the < operator using Plays with different/invalid number of cards*/
bool TestPlayLesser1(Play parray[], int failedtests[],int& testnumber){
  bool passmain=true;
  int total=RSIZES[4];                   //total number of Play objects
  cout << "Testing Play's < Operator on Plays with different number of cards" << endl;
  for(int i=0;i<total;i++){
    for(int j=0;j<total;j++){
      if(i!=j && NUMCARDS[i]!=NUMCARDS[j]){
	if(((NUMCARDS[i]<NUMCARDS[j]) && !(parray[i]<parray[j]))||
	    (!(NUMCARDS[i]<NUMCARDS[j]) && parray[i]<parray[j])){
	  passmain=false;
	  failedtests[testnumber]=1;
#if VERBOSE==ON
	  Card getarr1[5],getarr2[5];
	  parray[i].Get(getarr1);
	  parray[j].Get(getarr2);
	  cout << "The Play's < operator is not working properly" << endl;
	  cout << "Your operator returned the wrong value when" << endl;
	  cout << "Comparing P1 < P2 " << endl;
	  cout << "P1 is ";
	  PrintCardArray(getarr1,NUMCARDS[i]);
	  cout << "P2 is ";
	  PrintCardArray(getarr2,NUMCARDS[j]);
	  cout << endl;
#endif
	}
	testnumber++;
      }
    }
  }
  return passmain;
}
#endif


#if TESTPLAY == ON
/*Tests the < operator using Plays with Singles*/
bool TestPlayLesser2(Play parray[], int failedtests[],int& testnumber){
  bool passmain=true;
  int k=0;
  cout << "Testing Play's < Operator on single cards" << endl;
  for(int i=0;i<52;i+=4){
    for(int j=2;j<52;j+=4){
      if(i!=j){
	  if((!LESSTHAN1[k] && (parray[i] < parray[j])) ||
	     (LESSTHAN1[k] && (!(parray[i] < parray[j])))){
	  passmain=false;
	  failedtests[testnumber]=1;
#if VERBOSE==ON
	  Card getarr1[5],getarr2[5];
	  parray[i].Get(getarr1);
	  parray[j].Get(getarr2);
	  cout << "The Play's < operator is not working properly" << endl;
	  cout << "Your operator returned the wrong value when" << endl;
	  cout << "Comparing P1 < P2 " << endl;
	  cout << "P1 is ";
	  PrintCardArray(getarr1,NUMCARDS[i]);
	  cout << "P2 is ";
	  PrintCardArray(getarr2,NUMCARDS[j]);
	  cout << endl;
	  cout << ((parray[i] < parray[j])?"true":"false")<< endl;
#endif
	}
	k++;
	testnumber++;
      }
    }
  }

  return passmain;
}
#endif
#if TESTPLAY == ON
/*Tests the < operator using Plays with Singles*/
bool TestPlayLesser3(Play parray[], int failedtests[],int& testnumber){
  bool passmain=true;
  int j=0;
  cout << "Testing Play's < Operator on Pairs" << endl;
  for(int i=RSIZES[0];i<RSIZES[1];i++){
    for(int k=RSIZES[0];k<RSIZES[1];k++){
      if(i!=k  && !(!parray[i]) && !(!parray[k])){
	if((LESSTHAN2[j] && !(parray[i] < parray[k])) ||
	    (!LESSTHAN2[j] && parray[i] < parray[k])){
	  passmain=false;
	  failedtests[testnumber]=1;
#if VERBOSE==ON
	  Card getarr1[5],getarr2[5];
	  parray[i].Get(getarr1);
	  parray[k].Get(getarr2);
	  cout << "The Play's < operator is not working properly" << endl;
	  cout << "Your operator returned the wrong value when" << endl;
	  cout << "Comparing P1 < P2 " << endl;
	  cout << "P1 is ";
	  PrintCardArray(getarr1,NUMCARDS[i]);
	  cout << "P2 is ";
	  PrintCardArray(getarr2,NUMCARDS[k]);
	  cout << endl;
#endif
	}
	testnumber++;
	j++;
      }
    }
  }
  return passmain;
}
#endif

#if TESTPLAY == ON
/*Tests the < operator using Plays with Singles*/
bool TestPlayLesser4(Play parray[], int failedtests[],int& testnumber){
  bool passmain=true;
  int j=0;
  cout << "Testing Play's < Operator on 3 of a kinds" << endl;
  for(int i=RSIZES[1];i<RSIZES[2];i++){
    for(int k=RSIZES[1];k<RSIZES[2];k++){
      if(i!=k  && !(!parray[i]) && !(!parray[k])){
	if((LESSTHAN3[j] && !(parray[i] < parray[k])) ||
	    (!LESSTHAN3[j] &&(parray[i] < parray[k]))){
	  passmain=false;
	  failedtests[testnumber]=1;
#if VERBOSE==ON
	  Card getarr1[5],getarr2[5];
	  parray[i].Get(getarr1);
	  parray[k].Get(getarr2);
	  cout << "The Play's < operator is not working properly" << endl;
	  cout << "Your operator returned the wrong value when" << endl;
	  cout << "Comparing P1 < P2 " << endl;
	  cout << "P1 is ";
	  PrintCardArray(getarr1,parray[i].NumCards());
	  cout << "P2 is ";
	  PrintCardArray(getarr2,parray[k].NumCards());
	  cout << "Your < operator returns " <<((parray[i] < parray[k])?"true":"false") << endl;
	  cout << "It should return " << (LESSTHAN3[j]?"true":"false") << endl;
	  cout << endl;
#endif
	}
	testnumber++;
	j++;
      }
    }
  }
  return passmain;
}
#endif

#if TESTPLAY == ON
/*Tests the < operator using Plays with 4 of a kinds*/
bool TestPlayLesser5(Play parray[], int failedtests[],int& testnumber){
  bool passmain=true;
  int j=0;
  cout << "Testing Play's < Operator on 4 of a kinds" << endl;
  for(int i=RSIZES[2];i<RSIZES[3];i++){
    for(int k=RSIZES[2];k<RSIZES[3];k++){
      if(i!=k  && !(!parray[i]) && !(!parray[k])){
	if((LESSTHAN4[j] && !(parray[i] < parray[k])) ||
	    (!LESSTHAN4[j] &&(parray[i] < parray[k]))){
	  passmain=false;
	  failedtests[testnumber]=1;
#if VERBOSE==ON
	  Card getarr1[5],getarr2[5];
	  parray[i].Get(getarr1);
	  parray[k].Get(getarr2);
	  cout << "The Play's < operator is not working properly" << endl;
	  cout << "Your operator returned the wrong value when" << endl;
	  cout << "Comparing P1 < P2 " << endl;
	  cout << "P1 is ";
	  PrintCardArray(getarr1,NUMCARDS[i]);
	  cout << "P2 is ";
	  PrintCardArray(getarr2,NUMCARDS[k]);
	  cout << "Your < operator returns " <<((parray[i] < parray[k])?"true":"false") << endl;
	  cout << "It should return " << (LESSTHAN4[j]?"true":"false") << endl;
	  cout << endl;
#endif
	}
	testnumber++;
	j++;
      }
    }
  }
  return passmain;
}
#endif

#if TESTPLAY == ON
/*Tests the < operator using Plays with 4 of a kinds*/
bool TestPlayLesser6(Play parray[], int failedtests[],int& testnumber){
  bool passmain=true;
  int j=0;
  cout << "Testing Play's < Operator on Plays with 5 Cards" << endl;
  for(int i=RSIZES[3];i<RSIZES[4];i++){
    for(int k=RSIZES[3];k<RSIZES[4];k++){
      if(i!=k  &&!HasSame(PICK5[i-RSIZES[3]],PICK5[k-RSIZES[3]])
	&& !(!parray[i]) && !(!parray[k])){
	if((LESSTHAN5[j] && !(parray[i] < parray[k])) ||
	    (!LESSTHAN5[j] &&(parray[i] < parray[k]))){
	  passmain=false;
	  failedtests[testnumber]=1;
#if VERBOSE==ON
	  Card getarr1[5],getarr2[5];
	  parray[i].Get(getarr1);
	  parray[k].Get(getarr2);
	  cout << "The Play's < operator is not working properly" << endl;
	  cout << "Your operator returned the wrong value when" << endl;
	  cout << "Comparing P1 < P2 " << endl;
	  cout << "P1 is ";
	  PrintCardArray(getarr1,NUMCARDS[i]);
	  cout << "P2 is ";
	  PrintCardArray(getarr2,NUMCARDS[k]);
	  cout << "Your < operator returns " <<((parray[i] < parray[k])?"true":"false") << endl;
	  cout << "It should return " << (LESSTHAN5[j]?"true":"false") << endl;
	  cout << endl;
#endif
	}
	testnumber++;
	j++;
      }
    }
  }
  return passmain;
}
#endif


#if TESTPLAY == ON

/*Tests the > operator using Plays with different/invalid number of cards*/
bool TestPlayGreater1(Play parray[], int failedtests[],int& testnumber){
  bool passmain=true;
  int total=RSIZES[4];                   //total number of Play objects
  cout << "Testing Play's > Operator on Plays with different number of cards" << endl;
  for(int i=0;i<total;i++){
    for(int j=0;j<total;j++){
      if(i!=j && NUMCARDS[i]!=NUMCARDS[j]){
	if(((NUMCARDS[i]>NUMCARDS[j]) && !(parray[i]>parray[j]))||
	    (!(NUMCARDS[i]>NUMCARDS[j]) && parray[i]>parray[j])){
	  passmain=false;
	  failedtests[testnumber]=1;
#if VERBOSE==ON
	  Card getarr1[5],getarr2[5];
	  parray[i].Get(getarr1);
	  parray[j].Get(getarr2);
	  cout << "The Play's > operator is not working properly" << endl;
	  cout << "Your operator returned the wrong value when" << endl;
	  cout << "Comparing P1 > P2 " << endl;
	  cout << "P1 is ";
	  PrintCardArray(getarr1,NUMCARDS[i]);
	  cout << "P2 is ";
	  PrintCardArray(getarr2,NUMCARDS[j]);
	  cout << endl;
#endif
	}
	testnumber++;
      }
    }
  }
  return passmain;
}

#endif


#if TESTPLAY == ON

/*Tests the < operator using Plays with Singles*/
bool TestPlayGreater2(Play parray[], int failedtests[],int& testnumber){
  bool passmain=true;
  int k=0;
  cout << "Testing Play's > Operator on single cards" << endl;
  for(int i=0;i<52;i+=4){
    for(int j=2;j<52;j+=4){
      if(i!=j){
	  if((!GREATERTHAN1[k] && (parray[i] > parray[j])) ||
	     (GREATERTHAN1[k] && (!(parray[i] > parray[j])))){
	  passmain=false;
	  failedtests[testnumber]=1;
#if VERBOSE==ON
	  Card getarr1[5],getarr2[5];
	  parray[i].Get(getarr1);
	  parray[j].Get(getarr2);
	  cout << "The Play's > operator is not working properly" << endl;
	  cout << "Your operator returned the wrong value when" << endl;
	  cout << "Comparing P1 > P2 " << endl;
	  cout << "P1 is ";
	  PrintCardArray(getarr1,NUMCARDS[i]);
	  cout << "P2 is ";
	  PrintCardArray(getarr2,NUMCARDS[j]);
	  cout << endl;

#endif
	}
	k++;
	testnumber++;
      }
    }
  }

  return passmain;
}
#endif


#if TESTPLAY == ON
/*Tests the > operator using Plays with Singles*/
bool TestPlayGreater3(Play parray[], int failedtests[],int& testnumber){
  bool passmain=true;
  int j=0;
  cout << "Testing Play's > Operator on Pairs" << endl;
  for(int i=RSIZES[0];i<RSIZES[1];i++){
    for(int k=RSIZES[0];k<RSIZES[1];k++){
      if(i!=k  && !(!parray[i]) && !(!parray[k])){
	if((GREATERTHAN2[j] && !(parray[i] > parray[k])) ||
	    (!GREATERTHAN2[j] && parray[i] > parray[k])){
	  passmain=false;
	  failedtests[testnumber]=1;
#if VERBOSE==ON
	  Card getarr1[5],getarr2[5];
	  parray[i].Get(getarr1);
	  parray[k].Get(getarr2);
	  cout << "The Play's > operator is not working properly" << endl;
	  cout << "Your operator returned the wrong value when" << endl;
	  cout << "Comparing P1 > P2 " << endl;
	  cout << "P1 is ";
	  PrintCardArray(getarr1,NUMCARDS[i]);
	  cout << "P2 is ";
	  PrintCardArray(getarr2,NUMCARDS[k]);
	  cout << endl;
#endif
	}
	testnumber++;
	j++;
      }
    }
  }
  return passmain;
}

#endif


#if TESTPLAY == ON
/*Tests the < operator using Plays with Singles*/
bool TestPlayGreater4(Play parray[], int failedtests[],int& testnumber){
  bool passmain=true;
  int j=0;
  cout << "Testing Play's > Operator on 3 of a kinds" << endl;
  for(int i=RSIZES[1];i<RSIZES[2];i++){
    for(int k=RSIZES[1];k<RSIZES[2];k++){
      if(i!=k  && !(!parray[i]) && !(!parray[k])){
	if((GREATERTHAN3[j] && !(parray[i] > parray[k])) ||
	    (!GREATERTHAN3[j] && parray[i] > parray[k])){
	  passmain=false;
	  failedtests[testnumber]=1;
#if VERBOSE==ON
	  Card getarr1[5],getarr2[5];
	  parray[i].Get(getarr1);
	  parray[k].Get(getarr2);
	  cout << "The Play's > operator is not working properly" << endl;
	  cout << "Your operator returned the wrong value when" << endl;
	  cout << "Comparing P1 > P2 " << endl;
	  cout << "P1 is ";
	  PrintCardArray(getarr1,parray[i].NumCards());
	  cout << "P2 is ";
	  PrintCardArray(getarr2,parray[k].NumCards());
	  cout << "Your > operator returns " <<((parray[i] < parray[k])?"true":"false") << endl;
	  cout << "It should return " << (LESSTHAN3[j]?"true":"false") << endl;
	  cout << endl;
#endif
	}
	testnumber++;
	j++;
      }
    }
  }
  return passmain;
}

#endif


#if TESTPLAY == ON
/*Tests the < operator using Plays with 4 of a kinds*/
bool TestPlayGreater5(Play parray[], int failedtests[],int& testnumber){
  bool passmain=true;
  int j=0;
  cout << "Testing Play's > Operator on 4 of a kinds" << endl;
  for(int i=RSIZES[2];i<RSIZES[3];i++){
    for(int k=RSIZES[2];k<RSIZES[3];k++){
      if(i!=k  && !(!parray[i]) && !(!parray[k])){
	if((GREATERTHAN4[j] && !(parray[i] > parray[k])) ||
	    (!GREATERTHAN4[j] && parray[i] > parray[k])){
	  passmain=false;
	  failedtests[testnumber]=1;
#if VERBOSE==ON
	  Card getarr1[5],getarr2[5];
	  parray[i].Get(getarr1);
	  parray[k].Get(getarr2);
	  cout << "The Play's > operator is not working properly" << endl;
	  cout << "Your operator returned the wrong value when" << endl;
	  cout << "Comparing P1 > P2 " << endl;
	  cout << "P1 is ";
	  PrintCardArray(getarr1,NUMCARDS[i]);
	  cout << "P2 is ";
	  PrintCardArray(getarr2,NUMCARDS[k]);
	  cout << "Your < operator returns " <<((parray[i] < parray[k])?"true":"false") << endl;
	  cout << "It should return " << (LESSTHAN4[j]?"true":"false") << endl;
	  cout << endl;
#endif
	}
	testnumber++;
	j++;
      }
    }
  }
  return passmain;
}

#endif


#if TESTPLAY == ON
/*Tests the > operator using Plays with 4 of a kinds*/
bool TestPlayGreater6(Play parray[], int failedtests[],int& testnumber){
  bool passmain=true;
  int j=0;
  cout << "Testing Play's > Operator on Plays with 5 Cards" << endl;
  for(int i=RSIZES[3];i<RSIZES[4];i++){
    for(int k=RSIZES[3];k<RSIZES[4];k++){
      if(i!=k  &&!HasSame(PICK5[i-RSIZES[3]],PICK5[k-RSIZES[3]])
	&& !(!parray[i]) && !(!parray[k])){
	if((GREATERTHAN5[j] && !(parray[i] > parray[k])) ||
	    (!GREATERTHAN5[j] && parray[i] > parray[k])){
	  passmain=false;
	  failedtests[testnumber]=1;
#if VERBOSE==ON
	  Card getarr1[5],getarr2[5];
	  parray[i].Get(getarr1);
	  parray[k].Get(getarr2);
	  cout << "The Play's > operator is not working properly" << endl;
	  cout << "Your operator returned the wrong value when" << endl;
	  cout << "Comparing P1 > P2 " << endl;
	  cout << "P1 is ";
	  PrintCardArray(getarr1,NUMCARDS[i]);
	  cout << "P2 is ";
	  PrintCardArray(getarr2,NUMCARDS[k]);
	  cout << "Your < operator returns " <<((parray[i] < parray[k])?"true":"false") << endl;
	  cout << "It should return " << (LESSTHAN5[j]?"true":"false") << endl;
	  cout << endl;
#endif
	}
	testnumber++;
	j++;
      }
    }
  }
  return passmain;
}
#endif
The ! operator is checked here, this part of the code is line 457 if(!(*c1)){
Code:
bool TestCardConstructor(int failedtests[],int& testnumber){
  Card* c1;
  int suitidx,faceidx;                //used to hold index of suit and face
  bool failedmain=false;
  cout << "Testing Card(char,int) constructor" << endl;
  for(int i=0;i<52;i++){
    suitidx=i%4;
    faceidx=i/4;
    char currsuit=(i%3)?SUITS[suitidx]:tolower(SUITS[suitidx]);  //uses the lower
								 //case char once
								 //in a while to
								 //make sure it works
    c1=new Card(currsuit,FACES[faceidx]);                        //create a Card

    if(!(*c1)){                                                  //check ! operator
      failedtests[testnumber]=1;
      failedmain=true;
Here is the PLAY ! operator
Code:
bool TestNotOperator(Play parray[], int failedtests[],int& testnumber){
  bool passmain=true;
  int total=RSIZES[4];                 //total number of Play objects
  cout << "Testing Play's ! operator" << endl;
  for(int i=0;i<total;i++){
    bool notrc=!parray[i];
    if((VALIDPLAYS[i] && notrc) || (!VALIDPLAYS[i]&& (!notrc))){
      passmain=false;
      failedtests[testnumber]=1;
#if VERBOSE==ON
      cout << "The Play's !operator is not working properly" << endl;
      cout << "The operator should have returned "<< ((!VALIDPLAYS[i])?"true":"false")<< endl;
      cout << "Your function returned " << ((!parray[i])?"true":"false")<<endl;
      cout << i << endl;
      Card arr[5];
      int getrc=parray[i].Get(arr);
      PrintCardArray(arr,getrc);

      cout << endl;
#endif
    }
    testnumber++;
  }
  return passmain;
}
#endif