我必须使用Visual Studio 2012表单创建一个小型gui项目,主要问题是:我无法为我的生活创建一系列对象,甚至连同学们的项目都无法运行。
array<className^>^ arrayName = gcnew array<className^>(100);
或者在我的情况下:
array<kind^> ^testArray = gcnew array<kind^>(100);
应该起作用。应该这个错误有点像
错误:数据成员初始值设定项不允许
它适用于其他人,但在vs2012中不知何故不适用于我,尽管它完全相同。不要得到我所缺少的。
我创建的一个类的快速而肮脏的例子:
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_; }
};
和类.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);
在尝试运行它之前,它是红色下划线,上面提到了错误。编译它会给出以下输出:
警告C4677:";testArray":非私有成员的签名包括私有程序集类型";善良";。
错误C3845:";pr5temp::MyForm::testArray":只有静态数据成员才能在引用类或值类型中初始化
不是100%,因为它是从德语翻译成英语的,但如果它有帮助的话:
警告C4677:";testArray":私人议员签名;善良";。
错误C3845:";pr5temp::MyForm::testArray":Nur statische Datenmember können innhalb einer Verweisklasse or eines Wettyps initializer werden。
您应该初始化构造函数中的字段。
...
private:
System::ComponentModel::Container ^components;
array<kind^> ^testArray;
...
public ref class MyForm : public System::Windows::Forms::Form
{
public:
MyForm(void)
{
InitializeComponent();
testArray= gcnew array<kind^>(100);
}
...
或者确实使其成为静态
static array<kind^> ^testArray = gcnew array<kind^>(100);
但请记住,数组中的元素尚未初始化。