Мне нужно создать небольшой проект gui с использованием форм Visual Studio 2012, основная проблема: Я не могу создать массив объектов для своей жизни, даже не реализуются проекты сокурсников.C++/cli windows forms in vs2012, массив объектов невозможен
array<className^>^ arrayName = gcnew array<className^>(100);
Или в моем случае:
array<kind^> ^testArray = gcnew array<kind^>(100);
должны работать. Должен. Ошибка несколько напоминает
Error: data member initializer is not allowed
Он работает для других, но как-то не для меня в vs2012, несмотря на то, что это точно так же. Не понимаю, чего мне не хватает.
Быстрый и грязный пример classes.h я создал, чтобы проверить материал:
ref class memberino {
private:
String^ memVar;
public:
memberino(){};
memberino(String^ memVar_);
String^ getMemVar() { return memVar; }
void setMemVar(String^ memVar_) { this->memVar = memVar_; }
};
ref class baseClass abstract {
private:
String^ baseVar;
memberino M;
public:
baseClass(){};
baseClass(String^ baseVar_, String^ memVar_);
virtual String^ getMemVar() { return M.getMemVar(); }
virtual String^ getBaseVar() { return baseVar; }
virtual void setBaseVar(String^ baseVar_) { this->baseVar = baseVar_; }
virtual String^ getChildVar() = 0;
};
ref class kind: public baseClass {
private:
String^ childVar;
public:
kind(){};
kind(String^ baseVar_, String^ memVar_, String^ childVar_);
virtual String^ getChildVar() override { return childVar; }
virtual void setChildVar(String^ childVar_) { this->childVar = childVar_; }
};
И в classes.cpp:
memberino::memberino(String^ memVar_){
this->setMemVar(memVar_);
}
baseClass::baseClass(String^ baseVar_, String^ memVar_):M(memVar_){
this->setBaseVar(baseVar_);
}
kind::kind(String^ baseVar_, String^ memVar_, String^ childVar_):
baseClass(baseVar_, memVar_){
this->setChildVar(childVar_);
}
В MyForm.h я просто пытаюсь создать массив, подобный:
array<kind^> ^testArray = gcnew array<kind^>(100);
Прежде чем пытаться запустить его, он подчеркивает красную ошибку, упомянутую выше. Компиляция это дает следующий результат:
warning C4677: "testArray": The signature of the non-private member includes the private assemblytype "kind".
error C3845: "pr5temp::MyForm::testArray": Only static data members can be initialized in a reference class or value type
не 100%, как это перевод с немецкого на английский, но в случае, если это помогает:
warning C4677: "testArray": Die Signatur des nicht privaten Members enthält den privaten Assemblytyp "kind".
error C3845: "pr5temp::MyForm::testArray": Nur statische Datenmember können innerhalb einer Verweisklasse oder eines Werttyps initialisiert werden.
Показать минимальный код, который демонстрирует вашу ошибку. –
Скопируйте * актуальную * и вставьте ее здесь, заполните и неотредактируйте. –
Пытался перевести его, не уверен, если это точный смысл, извините. – agrypnie