From: LDB <thesource@ldb-jab.org>
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 08:49:20 -0400 [thread overview]
Message-ID: <40D587D0.2050208@ldb-jab.org> (raw)
In-Reply-To: <1087708691.11832.32.camel@localhost>
Abstract class .........
LDB
John T. Williams wrote:
>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
>>
>>
>
>-
>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 12:49 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
2004-06-20 12:49 ` LDB [this message]
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=40D587D0.2050208@ldb-jab.org \
--to=thesource@ldb-jab.org \
--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).