Я пытаюсь обойти эту ошибку, полученную из компилятора Microsoft Visual Studio 10. Ошибка:
Some class : error C2248: cannot access protected member declared in class ''
. Вот код, который воспроизводит эту ошибку. Я не могу понять, как создать объект, которому принадлежит другой объект, имеющий защищенный конструктор по умолчанию. У меня есть другой конструктор, который принимает входной параметр, но не может вызвать его, независимо от того, какие логические рассуждения я применяю. Очевидно, я упускаю что-то глупое или действительно важное, поэтому я надеваю это здесь, чтобы посмотреть, сможет ли кто-нибудь уловить мою ошибку. Спасибо всем !!!
#ifndef FOO_H
#define FOO_H
class Foo {
public :
int myFooInt;
~Foo();
Foo(int fooInt);
protected : //Uncomment to generate C2248 Error
Foo();
};
#endif
.
#include "foo.h"
Foo::Foo() {
}
Foo::Foo(int fooInt) : myFooInt(fooInt) {
}
Foo::~Foo() {
}
.
#ifndef GOO_H
#define GOO_H
#include "foo.h"
class Goo {
public :
~Goo();
Goo();
Goo(Foo foo);
Foo myFoo;
};
#endif
.
#include "Goo.h"
Goo::Goo() {
}
Goo::Goo(Foo foo) : myFoo (foo) {
}
Goo::~Goo() {
}
.
#include "foo.h"
#include "goo.h"
void main() {
Foo foo(5);
Goo goo(foo);
}