Hello,
When I pass a parameter through a base class constructor it does not seem to get set into the base class member variable. Here is a small repo case to demo
the problem. (Ice version is 3.3.0 for C++)
When I run this I get the following result.Code:--- demo.ice. --- module demo { enum ShapeType { Unknown, RectangleType, TriangleType, CircleType, SquareType }; class Shape { ShapeType type; }; class Circle extends Shape { int radius; }; sequence<Shape> ShapeSeq; }; -- demoTest.cpp -- #include "demo.h" #include <iostream> #include <assert.h> using namespace std; using namespace demo; class CircleI : virtual public Circle { public: CircleI(int rad) : Circle(CircleType, rad) { cerr << "Circle of radius:" << radius << " type:" << type << endl; assert(type == CircleType); } }; int main(int,char *[]) { ShapeSeq shapes; shapes.push_back( new CircleI(20) ); }
./demo
Circle of radius:20 type:0
Assertion failed: type == CircleType, file demoTest.cpp, line 15
Compilation abort (core dumped) at Thu Mar 26 10:38:23

Reply With Quote