Python to C++ translation?
George Sakkis
gsakkis at rutgers.edu
Mon Jul 18 18:34:40 EDT 2005
"Mangabasi" <mangabasi at gmail.com> wrote:
> Hi there,
>
> I need to translate the following code (rather something similar) to
> C++. I have been studying C++ for the last two days but I could not
> find an easy way to do the following Python snippet.
>
>
> class A:
> def __init__(self, x):
> self.x = x
> def methodA():
> pass # Ignore the details
> class B:
> def __init__(self, x):
> self.x = x
> def methodB():
> def methodB():
> pass # Ignore the details
> class C:
> def __init__(self, A, B):
> self.A = A
> self.B = B
>
> a = A(5)
> b = B(5.5)
> c = C(a, b)
> print c.A.x
> print c.B.x
> #so far I can do it in C++
> #how do I do the following in C++?
> d = C(b, a)
> print d.A.x
> print d.B.x
In python this works thanks to "duck typing"; as long as both A and B instances have an attribute
'x', A.x and B.x work as expected without the need for type declarations. In C++ (and other
statically typed languages) there is no duck typing, so you can't translate it from python verbatim.
The typical (if not only) way to achieve the same in C++ is to have A and B inherit from a common
parent class, say X, and drag the common interface and implementation of A and B to X. Of course you
could (or perhaps should) do the same in python:
class X:
def __init__(self, x):
self.x = x
class A(X):
def methodA():
pass # Ignore the details
class B(X):
def methodB():
pass # Ignore the details
class C:
def __init__(self, x1, x2):
self.x1 = x1
self.x2 = x2
So the constructor of C would take two X instances, and the respective attributes x1 and x2 would be
declared as pointers to X.
HTH
George
More information about the Python-list
mailing list