Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518

Ошибка Operator= char []

02.10.2014, 18:46. Показов 1634. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пробую написать свой строковый тип (wStr) с нуля

Такой код работает:
C++ (Qt)
1
2
wStr path_prj_2;
path_prj_2 = "text";
а такой выдает ошибку:
C++ (Qt)
1
wStr path_prj_2 = "text";
Bash
1
_win.cpp:115:20: error: conversion from 'const char [5]' to non-scalar type 'wStr' requested wStr path_prj_2 = ^"text";
Можете обьяснить в чем ошибка?

Пробовал определить в wstr.h такое:
C++ (Qt)
1
2
3
4
    wStr& operator=(const char * right) {
        // что-нибудь
        return *this;
    }
Но похоже туда "ошибочный" код не доходит.
Зато если есть
C++ (Qt)
1
2
3
4
5
    wStr& operator=(const std::string& right);
wStr& operator=(const char * right) {
        // что-нибудь
        return *this;
    }
То "работающий код" сюда wStr& operator=(const std::string& right); перестает доходить, зато идет уже на char.

Хочу что-бы работало как здесь:
std::string str1 = "text";

Еще, учитывая что работаем со ссылкой на таблицу char, подозреваю что где-то нужно передать и длину таблицы...
Подобных примеров не встретил.
Работаю в MinGW в g++ под Win.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.10.2014, 18:46
Ответы с готовыми решениями:

operator char() или operator int()
Здорова госпдо! Снова ничо не ясно как всегда. Разбираю программку из книги Страуструпа, там он описывает класс String в нем есть ...

Ошибка на "cout <<" no match for operator operand types are std::basic_ostream char
Немного слов про код.Данный код создан для выдачи номера машины,цвета,марки при предоставлении имени.Знаю,что код можно было написать проще...

Объясните, как исправить ошибку invalid operands of types 'double' and 'const char [2]' to binary 'operator -
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main () { double...

5
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
02.10.2014, 18:51
Лучший ответ Сообщение было отмечено Tester64 как решение

Решение

Цитата Сообщение от Tester64 Посмотреть сообщение
wStr path_prj_2 = "text";
Это инициализация -> нужен конструктор, принимающий const char*.
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
02.10.2014, 18:52
Цитата Сообщение от Tester64 Посмотреть сообщение
Можете обьяснить в чем ошибка?
Класс нужно видеть.
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
02.10.2014, 19:41  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
Класс нужно видеть.
Весь не выложу. Он очень большой (строку в число, число в строку, работа с хексом и т.д.), но вот нужное:

в H:
Кликните здесь для просмотра всего текста

C++ (Qt)
1
2
3
4
5
6
private:
    std::string data_str;
public:
    wStr& operator=(const wStr& right);
    wStr& operator=(const std::string& right);
    wStr& operator=(const char * right);


в СРР:
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
wStr& wStr::operator=(const wStr& right) {
    if (this == &right) { return *this; } //проверка на самоприсваивание
    data_str = right.data_str;
    return *this;
}
wStr& wStr::operator=(const std::string& right) {
    data_str = right;
    return *this;
}
wStr& wStr::operator=(const char * right) {
    std::string temp(right);
    data_str = temp;
    return *this;
}


Но этот код:
C++ (Qt)
1
 wStr test = "text";
все равно выдает ошибку:
Bash
1
conversion from 'const char [5]' to non-scalar type 'wStr'
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
02.10.2014, 19:42
Tester64, см пост 2.
1
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
02.10.2014, 21:05  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Это инициализация -> нужен конструктор, принимающий const char*.
Не сразу врубился о чем Вы! Спасибо! (конструкторы раньше не использовал)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.10.2014, 21:05
Помогаю со студенческими работами здесь

Ошибка: "char *concat(char *,.)": невозможно преобразовать аргумент 1 из "const char [4]" в "char *"
делал задание, но на строке 36 строке пишет, что &quot;char *concat(char *,...)&quot;: невозможно преобразовать аргумент 1 из &quot;const char &quot;...

Ошибка в cannot convert char * to char вроде поправил теперь выводит ересь(
Всем доброго дня! У меня такая проблемка.... написал программу, но сначала она ругалась на Cannot convert char* to char теперь вроде...

Ошибка: initializing argument 2 of `char* fgets(char*, int, FILE*)
Написать программу, которая считывает текст из файла и выводит на экран только строки, содержащие двузначные числа Помогите...

Ошибка: call of overloaded 'strchr(char&, char)' is ambiguous
Здравствуйте, прога почему-то ругается на функцию strchr, вот кусок кода: #include &lt;stdio.h&gt; #include &lt;iostream&gt; ...

Ошибка в работе с файлами: error: incompatible types in assignment of ‘char*’ to ‘char* [255]’
Суть задания Есть файл допустим 1.txt нужно выполнить обработку этого файла а результат вывести в этот же файл с другим расширением ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru