Трудно объяснить, что именно я хочу сделать здесь, но у меня есть базовый класс и два класса, которые наследуют этот базовый класс. Оба класса, которые наследуют его, имеют своих уникальных членов. Я хочу иметь возможность передать оба метода, и чтобы этот метод определил, какой он есть, а затем получил доступ к их уникальным элементам. Я не могу предположить, что будет только два класса, которые наследуют его, поэтому я ищу что-то более общее решение.
Вот пример того, что я хотел бы сделать:
#include <iostream>
class Base {
public:
int _type;
Base() { }
};
class First : public Base {
public:
int _first_only;
First() { }
};
class Second : public Base {
public:
int _second_only;
Second() { }
};
void test (Base b) {
std::cout << "Type: " << b._type << std::endl;
if(b._type==1) {
std::cout << "First\n";
// Want to be able to do this
std::cout << "Val: " << (First)b._first_only << std::endl;
} else if(b._type==2) {
std::cout << "Second\n";
// And this
std::cout << "Val: " << (Second)b._second_only << std::endl;
}
}
int main() {
First f;
f._first_only=1;
f._type=1;
Second s;
s._type=2;
s._second_only=2;
test(f);
test(s);
}