practice.hструктура в файле заголовка не распознается
struct CandyBar
{
string name;
double weight;
int calories;
};
practice.cpp
#include <iostream>
#include <string>
#include "practice.h"
using namespace std;
int main()
{
CandyBar snacks{ "Mocha Munch", 2.3, 350 };
cout << snacks.name << "\t" << snacks.weight << "\t" << snacks.calories << endl;
return 0;
}
, когда я построить решение, я получаю ошибки:
practice.h(5): error C2146: syntax error : missing ';' before identifier 'name'
practice.h(5): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2440: 'initializing' : cannot convert from 'const char [12]' to 'double'
There is no context in which this conversion is possible
practice.cpp(20): warning C4244: 'initializing' : conversion from 'double' to 'int', possible loss of data
practice.cpp(20): error C2078: too many initializers
practice.cpp(22): error C2039: 'name' : is not a member of 'CandyBar'
practice.h(4) : see declaration of 'CandyBar'
что причина всех ошибок? почему переменные не будут распознаны как поля структуры?
Вам не хватает '#include' и 'std ::' перед 'string name;' в заголовке. Изменить: не заметил, что вы включаете '' перед включением заголовка в исходный файл, поэтому он должен работать без инструкции include, но по-прежнему хорошей практикой является добавить оператор include в заголовок, поскольку он зависит на 'std :: string'. И 'using namespace std;' очень плохая практика! –
Praetorian
По крайней мере, это 'using namespace std;' было в файле * .cpp, а не в заголовке. – aschepler