У меня есть этот класс C ++, и я хочу инициализировать объект этого типа:
class MyClass
{
public:
/**
* Creates an instance of this class.
* @return Pointer to the created object.
*/
static MyClass * Create ();protected:
// Explicit protected Constructor
//and Copy-Constructor, use Create() to create an instance of this object.
MyClass();
}
Чтобы создать экземпляр, я сделал это:
static MyClass * m_object = myClass.Create();
но я получил эти предупреждения и ошибки:
warning C4832: token '.' is illegal after UDT 'MyClass'
error C2275: 'MyClass' : illegal use of this type as an expression
error C2228: left of '.Create' must have class/struct/union
Как правильно создать экземпляр этого объекта?
В C ++ доступ к статическим переменным / методам осуществляется с использованием разрешения области видимости (: :).
измени свой код на
static MyClass * m_object = MyClass::Create();
Для вызова статического члена вы должны использовать имя класса вместо имени объекта. Ваш экземпляр объекта должен быть таким.
MyClass *m_object = MyClass::Create();