Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает простейщий код, а под виндой всё ОК 
:(
    Опции темы
sitev
Дата 21.2.2011, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 22.10.2009

Репутация: нет
Всего: нет



Код

#include <iostream>
using namespace std;
 
class String;
 
class String
{
public:
        String();
        String(String& value) {}
        String(char *value) {}
        String(char value) {}
        String(int value) {}
        String(bool value) {}
        virtual ~String() {}
 
        virtual String& operator=(const String& value) {}
};
 
int main() {
        String s = "1"; // ЗДЕСЬ ОШИБКА
        String s1("1");
        s1 = "2";
        cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
        return 0;
}


Почему возникает ошибка в строчке String s = "1"; ? Перетащил из под винды... там работает...
PM MAIL   Вверх
Alca
Дата 21.2.2011, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: нет
Всего: 50



Какая ашипка?  smile

Добавлено @ 12:01
http://liveworkspace.org/code/99345e6c9d66...ce1cd8de2651ff7

Добавлено @ 12:05
Цитата

source.cpp: In function 'int main()':
source.cpp:21:20: warning: deprecated  conversion from string constant to 'char *'
source.cpp:21:20: error: No match for  'String(String)'
source.cpp:14:9: candidates are: String  ::String(bool)
source.cpp:13:9: String::String(int)
source.cpp:12:9: String::String(char)
source.cpp:11:9: String::String(char *)
source.cpp:10:9: String::String(String &)
source.cpp:9:9: String::String()
source.cpp:22:22: warning: deprecated  conversion from string constant to 'char *'
source.cpp:23:14: warning: deprecated  conversion from string constant to 'char *'

Build finished with errors


Это сообщение отредактировал(а) Alca - 21.2.2011, 12:06


--------------------
PM WWW ICQ Skype Jabber   Вверх
sitev
Дата 21.2.2011, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 22.10.2009

Репутация: нет
Всего: нет



**** Build of configuration Debug for project test2 ****

make all 
Building file: ../src/test2.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/test2.d" -MT"src/test2.d" -o"src/test2.o" "../src/test2.cpp"
../src/test2.cpp: In member function ‘virtual String& String::operator=(const String&)’:
../src/test2.cpp:17: warning: no return statement in function returning non-void
../src/test2.cpp: In function ‘int main()’:
../src/test2.cpp:21: warning: deprecated conversion from string constant to ‘char*’
../src/test2.cpp:21: error: no matching function for call to ‘String::String(String)’
../src/test2.cpp:14: note: candidates are: String::String(bool)
../src/test2.cpp:13: note:                 String::String(int)
../src/test2.cpp:12: note:                 String::String(char)
../src/test2.cpp:11: note:                 String::String(char*)
../src/test2.cpp:10: note:                 String::String(String&)
../src/test2.cpp:9: note:                 String::String()
../src/test2.cpp:22: warning: deprecated conversion from string constant to ‘char*’
../src/test2.cpp:23: warning: deprecated conversion from string constant to ‘char*’
make: *** [src/test2.o] Error 1
PM MAIL   Вверх
Alca
Дата 21.2.2011, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: нет
Всего: 50



Тему надо было создавать в общих вопросах, скорее всего

Добавлено через 1 минуту и 50 секунд
http://www.google.ru/search?hl=ru&sour...mp;aql=&oq=


--------------------
PM WWW ICQ Skype Jabber   Вверх
xvr
Дата 21.2.2011, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Конструкторы в строках 10 и 11 должны быть от const аргументов:
Код

        String(const String& value) {}
        String(const char *value) {}

PM MAIL   Вверх
sitev
Дата 21.2.2011, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 22.10.2009

Репутация: нет
Всего: нет



гм.... не всё так просто... если я добавлю функцию, например, getLength() и попробую вызвать её в конструкторе, то появляется ошибка
"passing ‘const String’ as ‘this’ argument of ‘int String::getLength()’ discards qualifiers"

как решить проблему???
Код

 String(const String& value) {
                int len = value.getLength();
           std::cout << "String(const String&): " << std::endl;
        }
        int getLength() {
                return 10;
        }



Это сообщение отредактировал(а) sitev - 21.2.2011, 14:17
PM MAIL   Вверх
xvr
Дата 21.2.2011, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(sitev @  21.2.2011,  13:45 Найти цитируемый пост)
как решить проблему???
Правильно описать GetLength:

Код

 int getLength() const ;

PM MAIL   Вверх
sitev
Дата 22.2.2011, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 22.10.2009

Репутация: нет
Всего: нет



зачем const? это я для примера написал return 10
getLength скорее мне нужен виртуальный

[CPP]
String(const String& value) {
    int len = value.getLength();
    std::cout << "String(const String&): " << std::endl;
}
virtual int getLength() {
          //какой-то код расчёта строки
}
[/CPP]


PM MAIL   Вверх
borisbn
Дата 22.2.2011, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



Цитата(sitev @  22.2.2011,  10:14 Найти цитируемый пост)
зачем const?

Цитата(sitev @  22.2.2011,  10:14 Найти цитируемый пост)
const String& value

почитай литературу по Си++ в части const
Цитата(sitev @  22.2.2011,  10:14 Найти цитируемый пост)
getLength скорее мне нужен виртуальный

виртуальные функции нужны ТОЛЬКО при наследовании от твоего класса, при чём в данном случае всё равно будет вызвана ф-ция твоего класса, а не наследника, т.к. ты вызываешь её из конструктора


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0761 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.