Forum: C++, Får error vid kompilering?

Forum huvudsida -> Programmering -> C++, Får error vid kompilering?

Sidor: 1

Till botten

olle 18:52 - 31:a Juli 2006 | Post #1
Medlem
Inlägg: 57


Skicka PM
Försökt och lista ut varför det ej går och kompilera när jag även tar bort all kod forutom funktionsens namn och funktionmallen. Så här ser den ut dock.

  1.  
  2. #include <vector>
  3. #include <iostream>
  4. #include <ctype.h>
  5. #include <stdlib.h>
  6. using namespace std;
  7.  
  8. class Less { // fördefinierad ej min kod
  9. public:
  10. Less() : testValue(0) {}
  11. Less( int x ) : testValue(x) {}
  12. bool operator() ( int lhs ) {
  13. return lhs < testValue;
  14. }
  15. bool operator() ( int lhs, int rhs ) {
  16. return lhs < rhs;
  17. }
  18. const int testValue;
  19. };
  20.  
  21.  
  22. template <class A,class Condition> // klagar på denna
  23. int count_if( Vector<A> &v, Condition cond ) {
  24.  
  25. int count = 0;
  26.  
  27. if ( v.empty )
  28. return count;
  29. else{
  30. for ( int i = 0; i < v.size();i++ )
  31. if ( cond( v[i] ) )
  32. count++;
  33.  
  34. return count;
  35. }
  36.  
  37. int main(){
  38. vector<int> v1;
  39.  
  40. v1.push_back(4);
  41. v1.push_back(20);
  42. v1.push_back(5);
  43. v1.push_back(3);
  44. v1.push_back(54);
  45. v1.push_back(1);
  46.  
  47. if ( count_if(v1,Less(10) ) > 3 )
  48. cout << "funkar" << endl;
  49.  
  50. return 0;
  51. }



Felutskrift som jag får:

3.cpp:23: error: template declaration of "int count_if"
3.cpp:23: error: "Vector" was not declared in this scope
3.cpp:23: error: expected primary-expression before ">" token
3.cpp:23: error: "v" was not declared in this scope
3.cpp:23: error: expected primary-expression before "cond"



-------------------------
Ingen signatur!



Nissebosselasse 19:15 - 31:a Juli 2006 | Post #2
Medlem
Inlägg: 490


Skicka PM
Du använder STL-bibliotekets vector (liten bokstav), men skrev Vector med stor bokstav (rad 23).

-------------------------
http://pushingcows.se
Gula Nallen

Senast redigerad 19:16 - 31:a Juli 2006


olle 19:54 - 31:a Juli 2006 | Post #3
Medlem
Inlägg: 57


Skicka PM
Kompilerade om den och hade glömt en "}" och "()" i raden
if ( v.empty() ). Nu när jag kör så fick jag bara varningar

3.cpp: In function "int count_if(std::vector<A, std::allocator<_CharT> >&, Condition) [with A = int, Condition = Less]":
3.cpp:51: instantiated from here
3.cpp:30: varning: comparison between signed and unsigned integer expressions


Misstänker att det är min kompilator och ej koden.

tack för hjälpen


-------------------------
Ingen signatur!



olle 19:56 - 31:a Juli 2006 | Post #4
Medlem
Inlägg: 57


Skicka PM
ska försöka starta en windows program. Så jag slipper detta dåliga kompilator Smiley

-------------------------
Ingen signatur!



Lajnold 03:08 - 11:a Augusti 2006 | Post #5
Medlem
Inlägg: 65


Skicka PM
Det är bara en varning att du jämför en unsigned int med en signed int. Bästa lösningen i det här fallet skulle nog vara att ändra "int i" till "unsigned int i" på rad 30, eftersom i aldrig ska vara negativ.

Sedan bör du inte inkludera ctype.h eller stdlib.h. Det är C-headers, inte C++. Inkludera istället cctype och cstdlib. När du använder dem alltså. I det här programmet använder du ingen av dem, så du borde istället utelämna dem helt.

-------------------------
Ingen signatur!

Senast redigerad 03:26 - 11:a Augusti 2006


Sidor: 1

Forum huvudsida -> Programmering -> C++, Får error vid kompilering?
Atom feed

Du får inte posta i den här tråden | Till toppen