странные ошибки
Вот небольшой кусок кода
#include <string>
using namespace std;
class My
{
public:
My(string message);
string Get();
protected:
string ErrMessage;
};
My::My(string message)
{
ErrMessage=message;
}
My::Get()
{
return ErrMessage;
}
int main()
{
cout<<"This is a simple stack machine\n";
return 0;
}
При компиляции получаю следующие ошибки:
Сompiling...
stackmachine.cpp
C:\Program Files\Microsoft Visual Studio\MyProjects\StackMachine\stackmachine.cpp(22) : error C2556: 'int __thiscall My::Get(void)' : overloaded function differs only by return type from 'class std::basic_string<char,struct std::char_traits<char>,cl
ass std::allocator<char> > __thiscall My::Get(void)'
C:\Program Files\Microsoft Visual Studio\MyProjects\StackMachine\stackmachine.cpp(10) : see declaration of 'Get'
C:\Program Files\Microsoft Visual Studio\MyProjects\StackMachine\stackmachine.cpp(22) : error C2371: 'Get' : redefinition; different basic types
C:\Program Files\Microsoft Visual Studio\MyProjects\StackMachine\stackmachine.cpp(10) : see declaration of 'Get'
Error executing cl.exe.
stackmachine.obj - 2 error(s), 0 warning(s)
Объясните пожалуйста, в чем проблема?
Объясните пожалуйста, в чем проблема?
Нужно указывать тип возвращаемого значения:
{
return ErrMessage;
}
А вообще за передачу объектов по значению отрывают руки по локоть.
Объекты надо передавать по константной ссылке, а не по значению.
Вот так будет правильнее:
{
public:
My(const string& message);
const string& Get() const;
protected:
string ErrMessage;
};
My::My(const string& message)
{
ErrMessage=message;
}
const string& My::Get() const
{
return ErrMessage;
}
#include "StackMachine.h"
struct TreeElem
{
char c;
int t;
int f;
int a;
};
//vector<TreeElem> v;
struct TreeElem k;
k.c='s';
Ошибки следующие
------------------Configuration: StackMachine - Win32 Debug--------------------
Compiling...
stackmachine.cpp
C:\Program Files\Microsoft Visual Studio\MyProjects\StackMachine\stackmachine.cpp(14) : error C2143: syntax error : missing ';' before '.'
C:\Program Files\Microsoft Visual Studio\MyProjects\StackMachine\stackmachine.cpp(14) : error C2501: 'k' : missing storage-class or type specifiers
C:\Program Files\Microsoft Visual Studio\MyProjects\StackMachine\stackmachine.cpp(14) : error C2371: 'k' : redefinition; different basic types
C:\Program Files\Microsoft Visual Studio\MyProjects\StackMachine\stackmachine.cpp(13) : see declaration of 'k'
C:\Program Files\Microsoft Visual Studio\MyProjects\StackMachine\stackmachine.cpp(14) : error C2143: syntax error : missing ';' before '.'
Error executing cl.exe.
stackmachine.obj - 4 error(s), 0 warning(s)
Я думаю, тебе будет проще, если ты почитаешь ЛЮБУЮ книгу по С++.
}, а в нем уже записать k.c='s';
Попробуй так.
}, а в нем уже записать k.c='s';
Попробуй так.
Это не единственная проблема, из-за которой не будет работать тот код.
Я думаю, тебе будет проще, если ты почитаешь ЛЮБУЮ книгу по С++.
Как раз таки мало в каких книгах по С++, хорошо разъясняется как работать со структурами!
Структура в си++ - это тоже самое, что и класс, с разницей только в том, как устанавливается закрытость данных. Если в книге по си++ не написано про классы - выкиньте ее.
Вот как раз таки про классы есть в каждой(!) книге, а структурами видимо пренебрегают, наверное полагая, что раз есть класс, то структура уже не нужна! Только в старой книжке по С++, еще Страустрапа, есть обяснение: что такое структуры, объединения и т.д.
А какая еще существует проблема в этом коде?
Структуры в С++ абсолютно то же самое, что и классы. Единственное различе: в классах по умолчанию все поля и методы являются private, а в структурах - public. На этом различия заканчиваются.