CodeProjectQuestions Ответов: 1

Visual studio это объявление не имеет класса хранения или спецификатора типа с vec. Как мне это исправить?


Visual studio это объявление не имеет класса хранения или спецификатора типа с vec. Как мне это исправить?
#include 
#include 
class Element {
public: Element(int i, const std::string& str) : mI(i), mStr(str) { }
private: int mI;    std::string mStr; };  
std::vectorvec;  /*Next adding a new "Element" to vector*/  
Element myElement(12, "Twelve");  
vec.push_back(myElement);  <---


Что я уже пробовал:

Visual studio это объявление не имеет класса хранения или спецификатора типа с vec. Как мне это исправить?
#include 
#include 
class Element {
public: Element(int i, const std::string& str) : mI(i), mStr(str) { }
private: int mI;    std::string mStr; };  
std::vectorvec;  /*Next adding a new "Element" to vector*/  
Element myElement(12, "Twelve");  
vec.push_back(myElement);  <---

jeron1

Скрыть   скопировать код

std::vectorvec; /*Next adding a new "Element" to vector*/

Эта строка выглядит неправильной.

Afzaal Ahmad Zeeshan

Я думаю, что там есть недостающее место, это может быть std::vector vec.

jeron1

Да, но вы должны указать тип при объявлении векторной переменной, что-то вроде;

std::vector<Element> vec; 

Видеть vector::vector - ссылка на C++ [^] относительно деталей.

1 Ответов

Рейтинг:
1

Rick York

Это очень, очень простой материал. Вам действительно нужно проверить учебники, на которые я разместил ссылку ранее. Пока вы этим занимаетесь, сделайте закладку на этот сайт : cplusplus.com - сеть ресурсов C++ [^]

std::vectorvec; /*Next adding a new "Element" to vector*/
Element myElement(12, "Twelve");
vec.push_back(myElement); <---
Да, именно так !!! что делает эта линия со стрелкой? Он ссылается на метод push_back объекта vec. Где объявлена эта переменная? Искать его. Мы подождем.

Посмотрите на первую строку этого кода. Что он делает? Ничего, и в этом вся проблема. Это не функция prototpe, потому что нет скобок. Это недопустимое объявление, поскольку в нем отсутствуют тип и имя. Это и есть причина ошибки, потому что это неверно сформированное утверждение. Вы ведь знаете, что такое std::vector, не так ли? Вам также не хватает объявления переменной с именем vec.

Вам придется использовать свои дедуктивные рассуждения, чтобы прийти к ответу отсюда.


CPallini

5.