// { dg-do assemble } // GROUPS passed visibility // visibility file // From: Sandeep Shroff // Date: Thu, 05 Aug 1993 17:23:20 -0700 // Subject: Access to private constructor. // Message-ID: <9308060023.AA10283@neptune.caere.com> #include #include class Base { public: char* getName() {return name_;} private: Base(); Base(char* str); char* name_; }; class Derived : public Base { public: Derived(int n, char* str); Derived(int n); int getNum() {return num_;} private: int num_; }; Base::Base() // { dg-error "is private" } { name_ = std::strcpy(new char[std::strlen(" ") + 1], " "); } Base::Base(char* str) // { dg-error "is private" } { if(str != NULL) name_ = std::strcpy(new char[std::strlen(str) + 1], str); } Derived::Derived(int n, char* str) : Base(str) // { dg-error "within this context" } { num_ = n; } Derived::Derived(int n) : Base() // { dg-error "within this context" } { num_ = n; } int main() { // Derived* d = new Derived(10, "test"); Derived* d = new Derived(10); std::cerr << d->getNum() << "\t" << d->getName() << std::endl; }