No, because typedef is for types (e.g. int, double, etc.).
The clearest way is to make another struct.
EDIT: Since this is C++, I suggest you make a base class, that contains all the logic and derive from it. In other words, use inheritance.
Example:
#include <iostream>
class Base {
public:
Base(int aa, int bb, int cc)
: a(aa), b(bb),c(cc) {}
int getA() {
return a;
}
int getB() {
return b;
}
int getC() {
return c;
}
// Notice that you make the data members private,
// but then you will need the getters to access them
// in the derived classes
protected:
int a;
int b;
int c;
};
class A : public Base {
public:
A(int aa, int bb, int cc)
: Base(aa, bb, cc) {}
int x() {
return a;
}
int y() {
return b;
}
int z() {
return c;
}
};
class B : public Base {
public:
B(int aa, int bb, int cc)
: Base(aa, bb, cc) {}
int gama() {
return a;
}
int beta() {
return b;
}
int theta() {
return c;
}
};
int main() {
A a_object(1, 2, 3);
B b_object(4, 5, 6);
std::cout << "a of a_object = " << a_object.x() << "\n";
std::cout << "b of b_object = " << b_object.gama() << "\n";
return 0;
}