473,804 Members | 2,201 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

OOP in C!

Hi,

I have a feeling that OOP can be done in C also. I have used a
structure to hold member variables and function pointers. The
structure is used as a class to create new 'objects'. But I hit a
problem. How do I access these 'member variables' from the function
that is pointed to by the function pointer in the structure.

I would really appreciate help with this and a code sample will be
wonderful.

Thanks in advance,
Prashanth Ellina
Nov 14 '05
70 2924

"E. Robert Tisdale" <E.************ **@jpl.nasa.gov > wrote in message
You have never provided a single reason
why you believe that these are not callback functions.
I submit that the reason is that you can't
and that you know that you can't.
They are not callback functions because they are not passed by a high-level
function to a lower-level one, and then called.

The vast majority of C function pointers are used to implement callback
functions, but not all of them.
You are simply trolling.
Please go away troll.

Can people (Not just E. Robert Tisdale) please stop filling the ng with
"troll alerts", accusations of trolling, etc. Most of the regs are not
interested.
Nov 14 '05 #41
Something that calls itself Christian Bau wrote:
A function pointer is by definition a callback function.


You are a liar.
I never said any such thing.
I merely asked for an example of a function pointer
that is not used as a callback function.
So far, you have failed to provide one.
Nov 14 '05 #42
In article <ca**********@n ntp1.jpl.nasa.g ov>,
"E. Robert Tisdale" <E.************ **@jpl.nasa.gov > wrote:
Something that calls itself Christian Bau wrote:
A function pointer is by definition a callback function.

In typical Tisdale manner, a falsified quote.

You are a liar.
I never said any such thing.
I merely asked for an example of a function pointer
that is not used as a callback function.
So far, you have failed to provide one.


Go away, idiot.
Nov 14 '05 #43
In article <ca**********@n ews5.svr.pol.co .uk>,
"Malcolm" <ma*****@55bank .freeserve.co.u k> wrote:
"E. Robert Tisdale" <E.************ **@jpl.nasa.gov > wrote in message
You have never provided a single reason
why you believe that these are not callback functions.
I submit that the reason is that you can't
and that you know that you can't.

They are not callback functions because they are not passed by a high-level
function to a lower-level one, and then called.

The vast majority of C function pointers are used to implement callback
functions, but not all of them.

You are simply trolling.
Please go away troll.

Can people (Not just E. Robert Tisdale) please stop filling the ng with
"troll alerts", accusations of trolling, etc. Most of the regs are not
interested.


I think this is a misunderstandin g.

It is not an accusation. It is the troll Tisdale, in this case replying
to Arthur J. O'Dwyer, and he is friendly enough to alert Arthur that
this is a post from a troll.
Nov 14 '05 #44

"E. Robert Tisdale" <E.************ **@jpl.nasa.gov > wrote

I merely asked for an example of a function pointer
that is not used as a callback function.
So far, you have failed to provide one.

OK here's an example.

/*
return the maximum value of an stdlib maths function that takes one scalar
as its argument.
*/
double maximum( double (*fptr)(double x) )
{
if( fptr == sin)
return 1.0;
if(fptr == sqrt)
return DBL_MAX;
if(fptr == asin)
return 3.14 * 2.0;

/* add extra for the other function in the maths library */
}
Nov 14 '05 #45
Me

Please don't waist your time trying to be OO using C...

Just move to C++ man...

The code I am porting right now does that and it sucks....

Write OO in an OO language and get AWAY from non OO except for drivers and
such.

On 7 Jun 2004 20:50:54 -0700, Gustavo Cipriano Mota Sousa
<gu*********@in f.ufg.br> wrote:
tinybyte <ti************ ******@virgilio .it> wrote in message
news:<pa******* *************** ******@virgilio .it>...
On Thu, 03 Jun 2004 16:34:44 -0700, Prashanth Ellina wrote:
> I would really appreciate help with this and a code sample will be
> wonderful.


Have a look at this online book, I think it will teach you a real
deal about OOP in ANSI C.

http://www.planetpdf.com/codecuts/pdfs/ooc.pdf


I started reading the book, anyone know where can i download the code
examples?


--
Using Opera's revolutionary e-mail client: http://www.opera.com/m2/
Nov 14 '05 #46
Malcolm wrote:
OK here's an example. cat example.c #include <math.h>
#include <float.h>

// return the maximum value of an stdlib maths function
// that takes one scalar as its argument.

double maximum(double (*fptr)(double x)) {
if( fptr == sin)
return 1.0;
if(fptr == sqrt)
return +DBL_MAX;
if(fptr == asin)
return 3.14 * 2.0;
return -DBL_MAX;

// add extra for the other function in the maths library
}
gcc -Wall -std=c99 -pedantic -c example.c


Contrived and silly but correct.
Nov 14 '05 #47
In article <ca**********@n ntp1.jpl.nasa.g ov>,
E. Robert Tisdale <E.************ **@jpl.nasa.gov > wrote:
I merely asked for an example of a function pointer
that is not used as a callback function.


A function is a callback when it calls *back*. So if you pass a
function pointer to a library, and the library calls it, then it's
reasonable to call it a callback.

Many uses of function pointers aren't like that.

For example, an interpreter that uses a table to map function names
to function pointers.

Or a struct that contains a function pointer representing a method
(you might consider it a callback if it's set "from outside", but not
if it's just set by the constructor).

Or a function pointer used in an expression, such as

return (size < threshhold ? quickalloc : slowalloc)(size , heap);

Ot a function pointer used for calls to dynamically loaded functions
(obviously not pure standard C).

-- Richard
Nov 14 '05 #48
On Tue, 8 Jun 2004 22:41:17 +0100, "Malcolm"
<ma*****@55bank .freeserve.co.u k> wrote:

"E. Robert Tisdale" <E.************ **@jpl.nasa.gov > wrote

I merely asked for an example of a function pointer
that is not used as a callback function.
So far, you have failed to provide one.

OK here's an example.

/*
return the maximum value of an stdlib maths function that takes one scalar
as its argument.
*/
double maximum( double (*fptr)(double x) )
{
if( fptr == sin)
return 1.0;
if(fptr == sqrt)
return DBL_MAX;
if(fptr == asin)
return 3.14 * 2.0;

/* add extra for the other function in the maths library */
}

And, of course, function pointers are a well-known approach to
implementing state machines.

--
Al Balmer
Balmer Consulting
re************* ***********@att .net
Nov 14 '05 #49
Richard Tobin wrote:
E. Robert Tisdale wrote:
I merely asked for an example of a function pointer
that is not used as a callback function.
A function is a callback when it calls *back*.
So, if you pass a function pointer to a library
and the library calls it,
then it's reasonable to call it a callback.


Agreed.
Many uses of function pointers aren't like that.

For example, an interpreter that uses a table
to map function names to function pointers.
What about Stephen Sprunk's parsing example upthread?

"Since the command selector is a string,
it can't be used in a switch statement,
and keeping the list of commands and their respective parsers
in an array also makes it very easy to add and remove commands
without touching the core logic.
And, since the list of commands is stored outside said logic,
it also allows different users
to get a different list of valid commands
(or the same commands pointing to different parsers)
just by passing in a different array to the same core logic."

Because the function table

struct parser_record parser_table_us er[] = {
{ "FOO", parse_foo },
{ "BAR", parse_bar },
{ "BAZ", parse_baz },
{ NULL, NULL}
};

can be defined in the calling program and passed to parse_main,
the functions (parse_foo, parse_bar and parse_baz)
are callback functions.
Or a struct that contains a function pointer representing a method
(you might consider it a callback if it's set "from outside",
but not if it's just set by the constructor).


It is a callback function
if you pass a reference (pointer) to that struct to another function
which calls it through the pointer set by the constructor.

The bottom line is that pointers to callback functions can be used
to implement run-time polymorphism in C as well as C++.
The code written to operate on object of a "base" type
will still work with objects "derived" from the base type
because it can callback the functions implemented for
the derived type through the function pointers
in the virtual function table (jump table).
Nov 14 '05 #50

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
11256
by: William C. White | last post by:
Does anyone know of a way to use PHP /w Authorize.net AIM without using cURL? Our website is hosted on a shared drive and the webhost company doesn't installed additional software (such as cURL) on the server because of that. Our site will have an SSL certificate next week, so I would like to use AIM instead of SIM, however, I don't know how to send data via POST over https and recieve data from the Authorize.net server over an https...
2
5849
by: Albert Ahtenberg | last post by:
Hello, I don't know if it is only me but I was sure that header("Location:url") redirects the browser instantly to URL, or at least stops the execution of the code. But appearantely it continues to execute the code until the browser send his reply to the header instruction. So an exit(); after each redirection won't hurt at all
3
23045
by: James | last post by:
Hi, I have a form with 2 fields. 'A' 'B' The user completes one of the fields and the form is submitted. On the results page I want to run a query, but this will change subject to which field is completed.
0
8502
by: Ollivier Robert | last post by:
Hello, I'm trying to link PHP with Oracle 9.2.0/OCI8 with gcc 3.2.3 on a Solaris9 system. The link succeeds but everytime I try to run php, I get a SEGV from inside the libcnltsh.so library. 354 roberto@ausone:Build/php-4.3.2> ldd /opt/php4/bin/php libsablot.so.0 => /usr/local/lib/libsablot.so.0 libstdc++.so.5 => /usr/local/lib/libstdc++.so.5 libm.so.1 => /usr/lib/libm.so.1
1
8614
by: Richard Galli | last post by:
I want viewers to compare state laws on a single subject. Imagine a three-column table with a drop-down box on the top. A viewer selects a state from the list, and that state's text fills the column below. The viewer can select states from the drop down lists above the other two columns as well. If the viewer selects only one, only one column fills. If the viewer selects two states, two columns fill. Etc. I could, if appropriate, have...
4
18312
by: Albert Ahtenberg | last post by:
Hello, I have two questions. 1. When the user presses the back button and returns to a form he filled the form is reseted. How do I leave there the values he inserted? 2. When the user comes back to a page where he had a submitted POST data the browser keeps telling that the data has expired and asks if repost. How to avoid that? I tried registering all POST and GET vars as SESSION vars but
1
6877
by: inderjit S Gabrie | last post by:
Hi all Here is the scenerio ...is it possibly to do this... i am getting valid course dates output on to a web which i have designed ....all is okay so far , look at the following web url http://www.mis.gla.ac.uk/biquery/training/ but each of the courses held have maximum of 8 people that could be
2
31451
by: Jack | last post by:
Hi All, What is the PHP equivilent of Oracle bind variables in a SQL statement, e.g. select x from y where z=:parameter Which in asp/jsp would be followed by some statements to bind a value to :parameter I dont like the idea of making the SQL statement on the fly without binding parameters as I dont want a highly polluted SQL cache.
3
23607
by: Sandwick | last post by:
I am trying to change the size of a drawing so they are all 3x3. the script below is what i was trying to use to cut it in half ... I get errors. I can display the normal picture but not the results of the picture half the size. The PHP I have installed support 1.62 or higher. And all I would like to do is take and image and make it fit a 3x3. Any suggestions to where I should read or look would be appreciated.
0
9715
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9595
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10600
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10097
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
1
7642
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5535
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
5673
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
4313
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
3835
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.