Проблема с синтаксисом класса - PullRequest
1 голос
/ 13 апреля 2020

Супер новый для этого. Пожалуйста, объясните самым тупым из возможных способов.

Я хочу вызвать функцию .size() в массиве и сделать ее параметром for l oop, чтобы я мог go с помощью индексации индекс. Однако, когда я набираю:

encryptedtxt.size() 

, я получаю сообщение об ошибке, указывающее, что мне нужен спецификатор класса. Когда я включаю спецификатор:

FileDecrypt.encryptedtxt.size()

Он говорит, что имя типа недопустимо.

Я включил соответствующие материалы ниже, если это поможет понять мой вопрос.

#include <iostream>
#include <fstream>
#include <string>
#include <vector>

using namespace std;

class FileDecrypt {
public:
    int x;
    int encryptedtxt[4];
    ifstream encryptedchars;

    int readin() {
        encryptedchars.open("encrypted.txt");
        for (int i=0;i < 4;i++) {
            encryptedchars >> encryptedtxt[i];
        }
        return 0;
    }

    int size = FileDecrypt.encryptedtxt.size();
    int decrypt() {
        for (int j = 0;j < encryptedtxt.size();j++) {
        }
    }
};

1 Ответ

3 голосов
/ 13 апреля 2020

Самый тупой путь возможен. В массиве нет функции size.

В C ++ вы должны использовать std::vector или std::array, каждая из которых имеет size функций.

Например,

#include <array>

std::array<int, 4> encryptedtxt;

Регулярные массивы - это то, что наследует C ++ от C, но у C ++ есть гораздо лучшие альтернативы. Либо std::array, если вы хотите массив фиксированного размера, либо std::vector, если вы хотите массив переменного размера.

...