From: "John T. Williams" <jowillia@vt.edu>
To: eric@cisu.net
Cc: linux-c-programming <linux-c-programming@vger.kernel.org>
Subject: Re: Pointers to classes
Date: Sun, 20 Jun 2004 01:06:49 -0400 [thread overview]
Message-ID: <1087708009.11838.13.camel@localhost> (raw)
In-Reply-To: <200406192346.34166.eric@cisu.net>
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
next prev parent reply other threads:[~2004-06-20 5:06 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 [this message]
2004-06-20 5:18 ` John T. Williams
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=1087708009.11838.13.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).