linux-c-programming.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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


  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).