It depends on what some_function() does....
Example 1:
Assuming some_function() does the same exact thing.
Code:
class base
{
public:
void some_function()
{
setScreenResolution(1024, 768);
}
};
class first_class : public base
{
private:
datatype somedata;
};
class second_class : public base
{
private:
datatype somedata;
};
Example 2:
Assumes that somdata is altered in a uniform way. And presumes some_function() to act identically in both classes.
Code:
template <typename datatype>
class my_template
{
public:
void some_function()
{
somedata += 55;
}
private:
datatype somedata;
};
Example 3:
Assumes nothing about some_function() other than it must exist.
Code:
class abc
{
public:
virtual void some_function() = 0;
};
class first_class : public abc
{
public:
virtual void some_function()
{
std::cout << "foo";
}
private:
datatype somedata;
};
class second_class : public abc
{
public:
virtual void some_function()
{
std::cout << "bar";
}
private:
datatype somedata;
};
Example 4:
This one assumes nothing about what some_function() does--rather guarantees it must exist, it only makes a defined type, somedata.
Code:
template <typename datatype>
class my_abc_template
{
public:
virtual void some_function() = 0;
private:
datatype somedata;
};