"Michael D. Borghardt" <mi*****@borghardtConsulting.net> wrote in message
news:QUhrc.553255$Ig.357552@pd7tw2no...
Hi. try this:
template<typename T>
class MakeFinal
{
private:
MakeFinal() {std::cout << "MakeFinal Hello World" << std::endl;};
~MakeFinal() {std::cout << "MakeFinal Goodbye World" << std::endl;};
friend T;
};
class Final : virtual public MakeFinal<Final>
{
public:
Final() {std::cout << "Final Hello World" << std::endl;};
~Final() {std::cout << "Final Goodbye World" << std::endl;};
};
I just did, after adding 'int main() { Final f; }' I get
main.cpp(26) : error C2248: 'MakeFinal<T>::__ctor' : cannot access private
member declared in class 'MakeFinal<T>'
with
[
T=Final
]
and
[
T=Final
]
and
[
T=Final
]
on MSVC++ 7.1. On gcc 3.3.1 I get
error: template parameters cannot be friends
On Comeau C++ I get
line 26: error: "MakeFinal<T>::MakeFinal() [with T=Final]" is
inaccessible
Derived() {std::cout << "Derived Hello World" << std::endl;};
What did you get on your compiler?
john