Инициализация члена векторного класса в конструкторе во время выполнения - C ++ - PullRequest
0 голосов
/ 21 апреля 2020

Я довольно новичок в C ++.

У меня проблема с тем, что мой конструктор класса , по-видимому, не может инициализировать члена класса вектора. Конструктор должен будет прочитать файл, собрать некоторые данные и затем изменить размер вектора во время выполнения .

. Я создал более простой пример, чтобы сосредоточиться на проблеме.

Вот заголовочный файл (test.h):

// File Guards
#ifndef __TEST_H
#define __TEST_H

// Including necessary libraries
#include <vector>

// Use the standard namespace!
using namespace std;

// Define a class
class myClass
{
    // Public members
    public:

        // vector of integers 
        vector<int> vec;

        // Declare the constructor to expect a definition
        myClass();
};

// Ends the File Guard
#endif

А вот исходный файл:

// Including the necessary headers
#include <iostream>
#include "test.h"

// Defining the constructor
myClass::myClass()
{
    // Loop control variable
    int i;

    // For loop to iterate 5 times
    for (i = 0; i < 5; i++)
    {
        // Populating the vector with 0s
        vec.push_back(0);
    }
}

// Main function to call the constructor
int main()
{
    // Create a "myClass" object
    myClass myObject;

    // iterating through the vector class member
    for (int x : myObject.vec)
    {
        // Outputting the elements
        cout << x + " ";
    }

    // Return statement for main function
    return 0;
}

Я ожидаю, что будут напечатаны пять нулей, но вместо этого ничего не происходит. Я думал об этом некоторое время и еще не нашел решения. Есть идеи, что здесь происходит?

1 Ответ

1 голос
/ 21 апреля 2020

Похоже, проблема в этой строке

cout << x + " ";

Вы не должны добавлять x с пробелом.

Это должно быть cout << x << " ";

...