Как установить простой LinkedList в Visual C ++ 2010? - PullRequest
1 голос
/ 05 марта 2012

Я новичок в Visual C ++. Я написал свой класс, но в нем есть ошибка

Ошибка 1, ошибка C3845: «CRegistration :: list1»: только статические члены данных могут быть инициализированы внутри класса ref или типа значения c: \ users \ marco \ desktop \ cs351 \ hw3 \ project3 \ CRegistration.h 44 1 Project3

Я понимаю, что компилятор сказал, что это за ошибка. Однако я не понимаю, что это значит. Ниже мой код

#pragma once

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace System::Collections;
using namespace System::Collections::Generic;


public ref class CRegistration
{
public: 

    CRegistration(void){

        ClickBoxRecord = 0;

        ClickBoxRecord = 0;


    };//end constructor

    void SetRadioRecord(int flag){ RadioRecordRecord = flag; }

    void SetClickBoxRecord(int flag){ ClickBoxRecord = flag; }

    int GetRadioRecordRecord(){return RadioRecordRecord}

    int GetClickBoxRecord(){return ClickBoxRecord}



protected:

private:

    int RadioRecordRecord;

    int ClickBoxRecord;

    LinkedList< int > list1 = gcnew LinkedList< int >();

    LinkedList< String^ > ^list2 = gcnew LinkedList< String^ >();

    LinkedList< String^ > ^list3 = gcnew LinkedList< String^ >();

    LinkedList< String^ > ^list4 = gcnew LinkedList< String^ >();

    LinkedList< String^ > ^list5 = gcnew LinkedList< String^ >();


};//end ref class

1 Ответ

1 голос
/ 05 марта 2012

Вы пытаетесь изучать C ++ или CLI?

// native C++
#include <list>
#include <string>

std::list<int> list1;
std::list<double> list2;
std::list<std::string> list3;
std::list<std::string> list4;
std::list<std::string> list5;

приписка

Проблема заключается в вашей встроенной инициализации нестатических элементов list1 - list5. В C ++ инициализация нестатических элементов обычно выполняется в списке инициализаторов или в теле конструктора. В C ++ мы обычно используем стек максимально, насколько это возможно, и используем кучу, только когда это необходимо, поскольку управление памятью важно.

// C++/CLI

// you can either make a list of each
LinkedList< int > list1;    // list of int
LinkedList< double > list2; // list of double
LinkedList< String > list3; // list of String

// or make an object that has one of each
public ref class AllThree {
    public:
       // members
       String str;
       double dbl;
       int i;
};

// and make a list of that object
LinkedList<AllThree> list4; // list of AllThree 
...