Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

странные ошибки

36K
17 июня 2008 года
YouAreEmpty
11 / / 17.06.2008
Привет!
Вот небольшой кусок кода
Код:
#include<iostream>
#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)

Объясните пожалуйста, в чем проблема?
3
18 июня 2008 года
Green
4.8K / / 20.01.2000
Цитата: YouAreEmpty

Объясните пожалуйста, в чем проблема?


Нужно указывать тип возвращаемого значения:

 
Код:
string My::Get()
    {
        return ErrMessage;
    }

А вообще за передачу объектов по значению отрывают руки по локоть.
Объекты надо передавать по константной ссылке, а не по значению.
Вот так будет правильнее:
Код:
class My
    {
    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;
    }
36K
18 июня 2008 года
YouAreEmpty
11 / / 17.06.2008
Спасибо большое! Звините за невнимательность возле My::Get()!:)
36K
18 июня 2008 года
YouAreEmpty
11 / / 17.06.2008
Млин, в чем здесь проблема:mad:?

Код:
#include<vector>
#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)
3
18 июня 2008 года
Green
4.8K / / 20.01.2000
Ну а как ты себе представляешь присвоение значения вне програмного блока?
Я думаю, тебе будет проще, если ты почитаешь ЛЮБУЮ книгу по С++.
38K
18 июня 2008 года
Капелька
11 / / 17.06.2008
Я, конечно, только начинаю писать на С++, но, по-моему, там нужен void main(){
}, а в нем уже записать k.c='s';
Попробуй так.
255
18 июня 2008 года
Dart Bobr
1.4K / / 09.04.2004
Цитата: Капелька
Я, конечно, только начинаю писать на С++, но, по-моему, там нужен void main(){
}, а в нем уже записать k.c='s';
Попробуй так.



Это не единственная проблема, из-за которой не будет работать тот код.

31K
18 июня 2008 года
volga
15 / / 09.10.2007
+Еще при объявлении k не надо писать struct
36K
18 июня 2008 года
YouAreEmpty
11 / / 17.06.2008
Цитата: Green
Ну а как ты себе представляешь присвоение значения вне програмного блока?
Я думаю, тебе будет проще, если ты почитаешь ЛЮБУЮ книгу по С++.



Как раз таки мало в каких книгах по С++, хорошо разъясняется как работать со структурами!

87
18 июня 2008 года
Kogrom
2.7K / / 02.02.2008
Цитата: YouAreEmpty
Как раз таки мало в каких книгах по С++, хорошо разъясняется как работать со структурами!



Структура в си++ - это тоже самое, что и класс, с разницей только в том, как устанавливается закрытость данных. Если в книге по си++ не написано про классы - выкиньте ее.

36K
18 июня 2008 года
YouAreEmpty
11 / / 17.06.2008
Цитата: Kogrom
Структура в си++ - это тоже самое, что и класс, с разницей только в том, как устанавливается закрытость данных. Если в книге по си++ не написано про классы - выкиньте ее.



Вот как раз таки про классы есть в каждой(!) книге, а структурами видимо пренебрегают, наверное полагая, что раз есть класс, то структура уже не нужна! Только в старой книжке по С++, еще Страустрапа, есть обяснение: что такое структуры, объединения и т.д.

4.3K
18 июня 2008 года
flat
142 / / 27.12.2005
Цитата: Dart Bobr
Это не единственная проблема, из-за которой не будет работать тот код.


А какая еще существует проблема в этом коде?

4.3K
18 июня 2008 года
flat
142 / / 27.12.2005
Цитата: YouAreEmpty
Вот как раз таки про классы есть в каждой(!) книге, а структурами видимо пренебрегают, наверное полагая, что раз есть класс, то структура уже не нужна! Только в старой книжке по С++, еще Страустрапа, есть обяснение: что такое структуры, объединения и т.д.


Структуры в С++ абсолютно то же самое, что и классы. Единственное различе: в классах по умолчанию все поля и методы являются private, а в структурах - public. На этом различия заканчиваются.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог