Results 1 to 4 of 4

Thread: C++ question

  1. #1
    Join Date
    Oct 2016
    Posts
    10
    Platforms
    Windows

    Default C++ question

    I am currently trying to compile a simple c++ code exactly as the ebook states, but I get errors, and I woder why?. can you guys please help me?.
    the code consists on a three separate files ,LibroCalificaciones.h, LibroCalificaciones.cpp, and clase6.cpp ( in which main is ). In this files want to separate the class from it's functions to define them in a separate file called LibroCalificaciones.cpp, in order to use call and use them within main.

    Qt Code:
    1. //****************( "LibroCalificaciones.h " )****************
    2.  
    3. #include<string>
    4.  
    5. class LibroCalificaciones {
    6.  
    7. public:
    8.  
    9. LibroCalificaciones( string );
    10. void establecerNombreCurso( string );
    11. string obtenerNombreCurso();
    12. void mostrarMensaje();
    13.  
    14. private:
    15.  
    16. string nombreCurso;
    17. };
    18.  
    19. //****************( " end of LibroCalificaciones.h " )****************
    To copy to clipboard, switch view to plain text mode 


    Qt Code:
    1. //****************( " LibroCalificaciones.cpp" )****************
    2.  
    3. #include<iostream>
    4. #include<string>
    5. #include"LibroCalificaciones.h"
    6.  
    7. LibroCalificaciones::LibroCalificaciones(string nombre) {
    8.  
    9. establecerNombreCurso( nombre );
    10. }
    11.  
    12. void LibroCalificaciones::establecerNombreCurso() {
    13.  
    14. nombreCurso = nombre;
    15. }
    16.  
    17. string LibroCalificaciones::obtenerNombreCurso() {
    18.  
    19. return nombreCurso;
    20. }
    21.  
    22. void LibroCalificaciones::mostrarMensaje() {
    23.  
    24. cout << "Bienvenido al libro de calificaciones para : " << obtenerNombreCurso() << "! \n\n";
    25. }
    26.  
    27. //****************( " end of LibroCalificaciones.cpp " )****************
    To copy to clipboard, switch view to plain text mode 


    ****************( " clase6.cpp " )****************

    Qt Code:
    1. #include<iostream>
    2. #include<cstdlib>
    3. #include"LibroCalificaciones.h"
    4.  
    5. using namespace std;
    6.  
    7. int main() {
    8.  
    9. LibroCalificaciones libroCalificaciones1( "Introduccion a la programacion en c++" );
    10. LibroCalificaciones libroCalificaciones2("Estructura de datos en c++");
    11.  
    12. cout << "LibroCalificaciones1 creado para el curso : " << libroCalificaciones1.obtenerNombreCurso() << "! \n\n";
    13. cout << "LibroCalificaciones2 creado para el curso : " << libroCalificaciones2.obtenerNombreCurso() << "! \n\n";
    14.  
    15. system("PAUSE");
    16. return 0;
    17.  
    18. }
    19.  
    20. //****************( " end of clase6.cpp " ) ****************
    To copy to clipboard, switch view to plain text mode 

    Qt Code:
    1. //****************( " errors I get while compiling in Microsoft visual studio 2015 community " ) ****************
    2.  
    3. 1>------ Build started: Project: clase6, Configuration: Debug Win32 ------
    4. 1> main.cpp
    5. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(7): error C2460: 'LibroCalificaciones::string': uses 'LibroCalificaciones', which is being defined
    6. 1> c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(3): note: see declaration of 'LibroCalificaciones'
    7. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(8): error C2327: 'LibroCalificaciones::string': is not a type name, static, or enumerator
    8. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(8): error C2061: syntax error: identifier 'string'
    9. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(9): error C2327: 'LibroCalificaciones::string': is not a type name, static, or enumerator
    10. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(9): error C3646: 'obtenerNombreCurso': unknown override specifier
    11. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(9): error C2059: syntax error: '('
    12. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(9): error C2238: unexpected token(s) preceding ';'
    13. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(14): error C2327: 'LibroCalificaciones::string': is not a type name, static, or enumerator
    14. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(14): error C3646: 'nombreCurso': unknown override specifier
    15. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(14): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    16. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\main.cpp(9): error C2440: 'initializing': cannot convert from 'const char [38]' to 'LibroCalificaciones'
    17. 1> c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\main.cpp(9): note: No constructor could take the source type, or constructor overload resolution was ambiguous
    18. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\main.cpp(10): error C2440: 'initializing': cannot convert from 'const char [27]' to 'LibroCalificaciones'
    19. 1> c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\main.cpp(10): note: No constructor could take the source type, or constructor overload resolution was ambiguous
    20. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\main.cpp(12): error C2039: 'obtenerNombreCurso': is not a member of 'LibroCalificaciones'
    21. 1> c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(3): note: see declaration of 'LibroCalificaciones'
    22. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\main.cpp(13): error C2039: 'obtenerNombreCurso': is not a member of 'LibroCalificaciones'
    23. 1> c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(3): note: see declaration of 'LibroCalificaciones'
    24. 1> LibroCalificaciones.cpp
    25. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(7): error C2460: 'LibroCalificaciones::string': uses 'LibroCalificaciones', which is being defined
    26. 1> c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(3): note: see declaration of 'LibroCalificaciones'
    27. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(8): error C2327: 'LibroCalificaciones::string': is not a type name, static, or enumerator
    28. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(8): error C2061: syntax error: identifier 'string'
    29. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(9): error C2327: 'LibroCalificaciones::string': is not a type name, static, or enumerator
    30. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(9): error C3646: 'obtenerNombreCurso': unknown override specifier
    31. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(9): error C2059: syntax error: '('
    32. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(9): error C2238: unexpected token(s) preceding ';'
    33. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(14): error C2327: 'LibroCalificaciones::string': is not a type name, static, or enumerator
    34. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(14): error C3646: 'nombreCurso': unknown override specifier
    35. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(14): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    36. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.cpp(5): error C2597: illegal reference to non-static member 'LibroCalificaciones::string'
    37. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.cpp(5): error C2146: syntax error: missing ')' before identifier 'nombre'
    38. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.cpp(5): error C2143: syntax error: missing ';' before '{'
    39. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.cpp(5): error C2447: '{': missing function header (old-style formal list?)
    40. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.cpp(12): error C2065: 'nombreCurso': undeclared identifier
    41. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.cpp(12): error C2065: 'nombre': undeclared identifier
    42. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.cpp(15): error C2039: 'obtenerNombreCurso': is not a member of 'LibroCalificaciones'
    43. 1> c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.h(3): note: see declaration of 'LibroCalificaciones'
    44. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.cpp(15): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    45. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.cpp(15): error C2146: syntax error: missing ';' before identifier 'obtenerNombreCurso'
    46. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.cpp(15): error C2143: syntax error: missing ';' before '{'
    47. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.cpp(15): error C2447: '{': missing function header (old-style formal list?)
    48. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.cpp(22): error C2065: 'cout': undeclared identifier
    49. 1>c:\users\eyel\documents\visual studio 2015\projects\clase6\clase6\librocalificaciones.cpp(22): error C3861: 'obtenerNombreCurso': identifier not found
    50. 1> Generating Code...
    51. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    To copy to clipboard, switch view to plain text mode 

  2. #2
    Join Date
    Jan 2006
    Location
    Graz, Austria
    Posts
    8,416
    Thanks
    37
    Thanked 1,544 Times in 1,494 Posts
    Qt products
    Qt3 Qt4 Qt5
    Platforms
    Unix/X11 Windows

    Default Re: C++ question

    The symbols of standard headers, like "string" or " cout", are declared in a namespace "std".

    You either need to specify the fully qualified named, e.g. "std::string" or specify a "using" clause, e.g.
    Qt Code:
    1. using std::string;
    To copy to clipboard, switch view to plain text mode 
    or even
    Qt Code:
    1. using namespace std;
    To copy to clipboard, switch view to plain text mode 

    The "using" clauses are usually only applied in source files, not in headers, as they would be visible everywhere that header is included.
    But probably OK in your case since this is just an example.

    Cheers,
    _

  3. #3
    Join Date
    Oct 2016
    Posts
    10
    Platforms
    Windows

    Default Re: C++ question

    thanks it works now, it was my fault as the ebook does states "using std::string, using std::cout & using std::endline", I didn't notticed that, but I preffer to use "using namespace std".
    Last edited by sauerplayer; 27th October 2016 at 21:45.

  4. #4
    Join Date
    Jan 2006
    Location
    Graz, Austria
    Posts
    8,416
    Thanks
    37
    Thanked 1,544 Times in 1,494 Posts
    Qt products
    Qt3 Qt4 Qt5
    Platforms
    Unix/X11 Windows

    Default Re: C++ question

    Quote Originally Posted by sauerplayer View Post
    thanks it works now, it was my fault as the ebook does states "using std::string, using std::cout & using std::endline", I didn't notticed that, but I preffer to use "using namespace std".
    Ok, just remember not to do that in real programs
    At least not in headers.

    Cheers,
    _

Similar Threads

  1. question about xmpp (different question)
    By davinciomar in forum Newbie
    Replies: 9
    Last Post: 6th September 2016, 14:52
  2. Question
    By Dumbledore in forum Qt Programming
    Replies: 1
    Last Post: 21st October 2007, 00:12
  3. VTK question
    By magland in forum General Programming
    Replies: 0
    Last Post: 9th May 2007, 21:47
  4. .Net & C# question
    By mickey in forum General Programming
    Replies: 1
    Last Post: 20th November 2006, 15:25
  5. C++ question?
    By vermarajeev in forum General Programming
    Replies: 4
    Last Post: 25th October 2006, 14:30

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.