Массив C в заголовке

#c #arrays #function #constructor

#c #массивы #функция #конструктор

Вопрос:

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

По сути, я создаю заголовок для одного из своих классов и столкнулся с трудностями.

Экземпляр рассматриваемого класса создается функцией Main(), теперь, когда этот экземпляр класса создан, я хочу передать длину массива. Однако я не могу этого сделать, если он объявлен статически в заголовке, верно?

Какие-либо решения? Извините, это, вероятно, очень просто, но я исхожу из опыта Java, я пытаюсь не делать вещи по-Java.

Спасибо.

Ответ №1:

Если вы программируете на C и хотите объявить массив переменного размера, то, скорее всего, вы не хотите использовать «встроенный» «массив» в стиле C. Это своего рода инструмент «гайки и болты».

Вы, вероятно, хотите использовать std::vector вместо этого. Это класс, который является более гибким и не требует указания размера в момент объявления. Вы можете поискать учебные пособия по его использованию в Интернете, но вот случайный из Google:

http://www.yolinux.com/TUTORIALS/LinuxTutorialC STL.html#VECTOR

Интересным аспектом C является то, что, хотя векторы являются «библиотечным кодом» и классом, который вы потенциально могли бы написать самостоятельно, не изменяя компилятор, они обеспечивают доступ с помощью обозначений, таких как скобки. Некоторые плюсы из faq и некоторые минусы из fqa, представленные здесь, с недоверием относятся к обеим сторонам:

http://yosefk.com/c fqa/operator.html

Хотя использование абстракции массива в стиле C имеет некоторые преимущества в производительности, std::vector он почти наверняка быстрее, чем массивы Java, и в большинстве случаев является лучшим выбором.

Комментарии:

1. Спасибо, сейчас я изучаю векторы.

Ответ №2:

Если я вас правильно понял, вы хотите получить размер статически типизированного массива и передать его классу?

Если это правильно, взгляните на http://ideone.com/JLoZY — это первое, что пришло мне в голову.

В основном компилятор заполнит необходимые параметры шаблона, поэтому вам не нужно беспокоиться о них. Это может быть легко использовано для использования в других сценариях

Комментарии:

1. По сути, когда программа выполняется, перед созданием экземпляра класса я хочу получить длину массива через cin.