From: "John T. Williams" <jowillia@vt.edu>
To: jtwilliams@vt.edu
Cc: eric@cisu.net, linux-c-programming <linux-c-programming@vger.kernel.org>
Subject: Re: Pointers to classes
Date: Sun, 20 Jun 2004 01:18:11 -0400 [thread overview]
Message-ID: <1087708691.11832.32.camel@localhost> (raw)
In-Reply-To: <1087708009.11838.13.camel@localhost>
Sorry wrong terminology. its not prototyping, but I can't remember what
you call it when you give a partial class, i.e.
class SomeClass;
rather then full class
class SomeClass {
private:
...
public:
...
};
?Maybe forward declaration ?
On Sun, 2004-06-20 at 01:06, John T. Williams wrote:
> Hello,
>
> I'm only taking a stab here, to be sure I'd have to see the complete
> file and #include's but it looks like your trying to use ConfigFile type
> before you define it or prototype it. If you define class ConfigFile
> somewhere else then you can probably fix the error by adding the line
>
> class ConfigFile;
>
> before you try to define
>
> class Connection {
> ...
> };
>
> you might also want to add the lines
>
> #ifndef CONNECT_H
> #define CONNECT_H
>
> to the very top of connect.h
>
> and
>
> #endif
>
> to the very bottom of connect.h
>
> and do the same thing for every .h file you create. This can save you
> many many problems later It helps to prevent accidental infinite
> includes and other common problems.
>
> Just to sum up my revised version of you connection.h
>
> ---------------------start connection.h
> #ifndef CONNECTION_H
> #define CONNECTION_H
>
> class ConfigFile;
>
> class Connection
> {
> private:
> ...
> ConfigFile* config;
> ...
> public:
> ...
> ConfigFile* getConfig();
> };
>
> #endif
> ---------------------end connection.h
>
>
>
> On Sun, 2004-06-20 at 00:46, Eric wrote:
> > Hello
> > First I would like to say im fairly new to C++ and keep in mind you will
> > probably see many glaring mistakes in reading my code, please be kind. Hey,
> > thats how we learn :)
> >
> > My problem is with pointers to classes. I am writing a VPN management program
> > and have a class Connection, which handles a connection ppp0, ppp1, etc, and
> > is closely tied with a class ConfigFile, which handles all the variables for
> > that connection obviously read from a file.
> >
> > I need to have a pointer to an object ConfigFile inside the Connection class
> > so I can access variables and such associated with that connection that were
> > read from a file. However, I am getting very strange compile errors when
> > trying to define the pointer to a class. These are the errors. Below are the
> > relevant files and how they are included.
> >
> > */home/bot403/programming/projects/vpn_client/src/connection.h:28: error:
> > syntax error before `*' token
> > */home/bot403/programming/projects/vpn_client/src/connection.h:31: error:
> > parse error before `*' token
> > */home/bot403/programming/projects/vpn_client/src/connection.h:36: error:
> > syntax error before `*' token
> >
> >
> > Here are the relevant files. Please let me know if you need additional
> > information.
> >
> > BTW, I don't consider making Connection a sublass of configfile a solution
> > becuase I am already teaching myself alot with this project and am happy with
> > simpleton solutions. Subclasses/Inheritance would require that I teach
> > myself way too much to accomplish way too little.
> >
> >
> > ---------------------start connection.h
> > class Connection
> > {
> > private:
> > char ifName[ 5 ];
> > char pppdopts[256];
> > char sshopts[256];
> > char pidfile[256];
> > ConfigFile * config;
> > pid_t pid;
> > public:
> > Connection(ConfigFile * cFile );
> > void printName( void );
> > int start();
> > int stop();
> > ~Connection();
> > ConfigFile * getConfig();
> >
> > };
> > ----------------------- end file
> > -----------------------start configfile.h
> > int readElement( char buffer[], char option[], char argument[] );
> >
> > using namespace std;
> >
> > class ConfigFile {
> > private:
> > ifstream configFile;
> > char configFileName[ 256 ];
> >
> > //File variables
> > char pppdevice[ 8 ];
> > char vpnhost[ 256 ];
> > char logfile[ 256 ];
> > char *pppdopts;
> > //SSH Specific
> > char sshcipher[ 15 ];
> > char sshlogin[ 256 ];
> > char sshidentity[ 256 ];
> > char *sshopts;
> > char sshport[ 10 ];
> > //Misc
> > char delay[ 10 ];
> > char vpnpidfile[80];
> > //Connection Details
> > char *networks[5];
> > char *nameservers[2];
> > //End File Variables
> >
> > public:
> > ConfigFile( char *Name );
> > ~ConfigFile();
> > int readConfig();
> > void printConfig();
> > int writeConfig(char *Filename);
> >
> > char *getsshopts(char buffer[]);
> > char *getpppdopts(char buffer[]);
> > char *getlogfile(char buffer[]);
> > char *getpidfile(char buffer[]);
> >
> > //FIXME
> > //char *getnetworks();
> > //char *getnameservers();
> >
> >
> > };
> >
> > -----------end of file
> > -----------top of connection.cpp
> >
> > #include <iostream>
> > #include <fstream>
> > #include <unistd.h>
> > #include "configfile.h"
> > #include "connection.h"
> > #include "strings.h"
> > #include "config.h"
> > ------snip---------
> >
> > -----------------end file
> >
> > ----------------top of configfile.cpp
> >
> > #include <iostream>
> > #include <fstream>
> > #include "configfile.h"
> > #include "strings.h"
> > -----snip------------
> >
> > --------------end of file
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2004-06-20 5:18 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-06-20 4:46 Pointers to classes Eric
2004-06-20 5:06 ` John T. Williams
2004-06-20 5:18 ` John T. Williams [this message]
2004-06-20 12:49 ` LDB
2004-06-20 13:30 ` Eric
-- strict thread matches above, loose matches on Subject: below --
2004-06-21 14:55 Huber, George K RDECOM CERDEC STCD SRI
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1087708691.11832.32.camel@localhost \
--to=jowillia@vt.edu \
--cc=eric@cisu.net \
--cc=jtwilliams@vt.edu \
--cc=linux-c-programming@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).