Конструктор класса и массивы - PullRequest
1 голос
/ 09 марта 2012

Я работаю над проектом для школы, и я зашел в тупик.Часть проекта требует, чтобы у нас был класс, который использует массив.Мы должны использовать массив (к сожалению, мы не можем использовать векторы).Я пытаюсь выяснить, как построить массив в классе во время выполнения.Мне изначально не нужно ничего вставлять в него, мне просто нужен конструктор, чтобы сделать массив определенного размера.Любая обратная связь или помощь очень ценится.Вот что у меня есть для класса и конструктора.Этот проект выполняется на языке c ++.

#pragma once
#include <iostream>
#include <string>
using namespace std;

class Node
{

public:
    int size;
    string container[];

    Node ( int s, string c[]);
};

Node::Node (int s, string c[])
{
    size=s;
        ***I need something here that will give string container[] the size of "size"***
}

Заранее спасибо.

Ответы [ 3 ]

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

Вам нужен динамически распределенный массив:

class Node
{

public:
    int size;
    string* container;

    Node ( int s, string c[])
    {
       container = new string[s];
       //copy c to container
    }
    ~Node ()
    {
       delete[] container;
    }
};

Также не забудьте освободить память в деструкторе.

0 голосов
/ 09 марта 2012

Я бы использовал указатель.Когда вы получите размер, просто вызовите new с этим размером.

char* myArray;

constructor(int size) {
    myArray = new char[size];
}

Вам также придется вызывать delete в деструкторе.

0 голосов
/ 09 марта 2012
class Node 
{ 

public: 
    int size; 
    string* container; 

    Node ( int s, string c[]); 
    ~Node() { if (container != NULL) delete [] container; }
}; 

Node::Node (int s, string c[]) : container(NULL)
{ 
    size=s; 
    container = new string[size];
    // Copy list values into container
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...