DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C++ (http://www.daniweb.com/forums/forum8.html)
-   -   Unknown syntax error in C++ class (http://www.daniweb.com/forums/thread114472.html)

dgr81 Mar 18th, 2008 12:49 am
Unknown syntax error in C++ class
 
I am getting compiler output that makes me think I have some sort of syntax error like a missing ';' or misaligned (). But I've checked my code thoroughly and can't find anything wrong. What else could cause this kind of error? I included the compiler output along with my .h and .cpp file for the class that won't compile. The other header files I #include shouldn't be causing the problem as they've already been thoroughly tested.

Compiler output:
g++ -Wall -g -I inc -I utils/include -c src/URL.cpp -o obj/URL.o
inc/URL.h:15: error: expected ‘,’ or ‘...’ before ‘&’ token
inc/URL.h:15: error: ISO C++ forbids declaration of ‘string’ with no type
inc/URL.h:27: error: expected ‘,’ or ‘...’ before ‘&’ token
inc/URL.h:27: error: ISO C++ forbids declaration of ‘string’ with no type
inc/URL.h:31: error: ‘string’ does not name a type
inc/URL.h:35: error: ‘string’ does not name a type
inc/URL.h:39: error: ‘string’ does not name a type
inc/URL.h:43: error: ‘string’ does not name a type
inc/URL.h:46: error: ‘ostream’ has not been declared
inc/URL.h:50: error: ‘string’ does not name a type
inc/URL.h:51: error: ‘string’ does not name a type
inc/URL.h:52: error: ‘string’ does not name a type
inc/URL.h:53: error: ‘string’ does not name a type
src/URL.cpp:13: error: expected ‘,’ or ‘...’ before ‘&’ token
src/URL.cpp:13: error: ISO C++ forbids declaration of ‘string’ with no type
src/URL.cpp: In constructor ‘URL::URL(int)’:
src/URL.cpp:15: error: ‘url’ was not declared in this scope
src/URL.cpp: In copy constructor ‘URL::URL(const URL&)’:
src/URL.cpp:21: error: ‘const class URL’ has no member named ‘GetURL’
src/URL.cpp: In member function ‘URL& URL::operator=(const URL&)’:
src/URL.cpp:33: error: ‘const class URL’ has no member named ‘GetURL’
src/URL.cpp: At global scope:
src/URL.cpp:38: error: expected ‘,’ or ‘...’ before ‘&’ token
src/URL.cpp:38: error: ISO C++ forbids declaration of ‘string’ with no type
src/URL.cpp: In member function ‘void URL::SetURL(int)’:
src/URL.cpp:40: error: ‘class URL’ has no member named ‘url’
src/URL.cpp:40: error: ‘url’ was not declared in this scope
src/URL.cpp: At global scope:
src/URL.cpp:46: error: ‘string’ does not name a type
src/URL.cpp:53: error: ‘string’ does not name a type
src/URL.cpp:60: error: ‘string’ does not name a type
src/URL.cpp:67: error: ‘string’ does not name a type
src/URL.cpp:73: error: ‘static’ may not be used when defining (as opposed to declaring) a static data member
src/URL.cpp:73: error: ‘bool URL::Test’ is not a static member of ‘class URL’
src/URL.cpp:73: error: ‘ostream’ was not declared in this scope
src/URL.cpp:73: error: ‘os’ was not declared in this scope
src/URL.cpp:74: error: expected ‘,’ or ‘;’ before ‘{’ token
src/URL.cpp: In member function ‘void URL::ParseURL()’:
src/URL.cpp:83: error: ‘url’ was not declared in this scope
src/URL.cpp:89: error: ‘url’ was not declared in this scope
src/URL.cpp:92: error: ‘prefix’ was not declared in this scope
src/URL.cpp: In member function ‘void URL::ParseHTTPURL()’:
src/URL.cpp:100: error: ‘url’ was not declared in this scope
src/URL.cpp:101: error: ‘InvalidURLExcpetion’ was not declared in this scope
src/URL.cpp:102: error: ‘scheme’ was not declared in this scope
src/URL.cpp:103: error: ‘url’ was not declared in this scope
src/URL.cpp:104: error: ‘root’ was not declared in this scope
src/URL.cpp: In member function ‘void URL::ParseFileURL()’:
src/URL.cpp:110: error: ‘url’ was not declared in this scope
src/URL.cpp:112: error: ‘scheme’ was not declared in this scope
src/URL.cpp:113: error: ‘root’ was not declared in this scope

URL.h:
#ifndef CS240_URL_H
#define CS240_URL_H

#include <string>
#include <ostream>

class URL
{
public:

        //!  No-arg constructor
        URL();

        //!  Constructor.  Creates a URL from string argument
        URL(const string & url);

        //!  Copy constructor.  Makes a complete copy of its argument
        URL(const URL & other);

        //!  Destructor
        ~URL();

        //!  Assignment operator
        URL & operator =(const URL & other);

        //!  Sets the url to argument
        void SetURL(const string & url);

        //!  Returns the URL
        //!  @return URL
        string GetURL();

        //!  Returns the prefix for the URL (everything up until the file name)
        //!  @return prefix for URL
        string GetPrefix();

        //!  Returns the scheme for the URL (http or file)
        //!  @return scheme for URL
        string GetScheme();

        //!  Returns the root for the URL path
        //!  @return root for URL path
        string GetRoot();

        //!  Test function for URL class
        static bool Test(ostream & os);

private:

        string url;
        string prefix;
        string scheme;
        string root;

        //!  Parses the various parts of the URL
        void ParseURL();

        //!  Parses an HTTP URL
        void ParseHTTPURL();

        //!  Parses a file URL
        void ParseFileURL();
};

#endif

URL.cpp:
#include "URL.h"
#include <string>
#include "CS240Exception.h"
#include <ostream>
#include "UnitTest.h"

//!  No-arg constructor
URL::URL()
{
}

//!  Constructor.  Creates a URL from string argument
URL::URL(const string & url)
{
        SetURL(url);
}

//!  Copy constructor.  Makes a complete copy of its argument
URL::URL(const URL & other)
{
        SetURL(other.GetURL());
}

//!  Destructor
URL::~URL()
{
}

//!  Assignment operator
URL & URL::operator =(const URL & other)
{
        if (&other != this)
                SetURL(other.GetURL());
        return *this;
}

//!  Sets the url to argument
void URL::SetURL(const string & url)
{
        this->url = url;
        ParseURL();
}

//!  Returns the URL
//!  @return URL
string URL::GetURL()
{
        return url;
}

//!  Returns the prefix for the URL (everything up until the file name)
//!  @return prefix for URL
string URL::GetPrefix()
{
        return prefix;
}

//!  Returns the scheme for the URL (http or file)
//!  @return scheme for URL
string URL::GetScheme()
{
        return scheme;
}

//!  Returns the root for the URL path
//!  @return root for URL path
string URL::GetRoot()
{
        return root;
}

//!  Test function for URL class
static bool URL::Test(ostream & os)                // todo
{
        return true;
}

//!  Parses the various parts of the URL
void URL::ParseURL()
{
        int index;

        if (url.at(0) == 'h')
                ParseHTTPURL();
        else if (url.at(0) == 'f')
                ParseFileURL();
        else
                throw InvalidURLException("URL scheme is neither http nor file");
        index = url.find_last_of('#');
        url = url.substr(0, index);
        index = url.find_last_of('/');
        prefix = url.substr(0, index);
}

//!  Parses an HTTP URL
void URL::ParseHTTPURL()
{
        int index;

        if (url.substr(0, 7) != "http://")
                throw InvalidURLExcpetion("URL scheme is neither http nor file");
        scheme = "http";
        index = url.find_first_of('/', 7);
        root = url.substr(0, index);
}

//!  Parses a file URL
void URL::ParseFileURL()
{
        if (url.substr(0, 5) != "file:")
                throw InvalidURLException("URL scheme is neither http nor file");
        scheme = "file";
        root = "file:";
}

bugmenot Mar 18th, 2008 1:05 am
Re: Unknown syntax error in C++ class
 
string is in the std namespace

dgr81 Mar 18th, 2008 1:28 am
Re: Unknown syntax error in C++ class
 
Quote:

Originally Posted by bugmenot (Post 563503)
string is in the std namespace

Thanks! using namespace std; along with a couple other quick corrections solved the problem.


All times are GMT -4. The time now is 6:00 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC