Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
54 / 42 / 7
Регистрация: 08.04.2011
Сообщений: 227

Сигнатуры класса и библиотеки

12.09.2012, 21:20. Показов 2914. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Недавно взялся за изучение C++ и после C# и Java с классами работать немного непривычно... Вопрос такой, есть класс library.cpp, есть заголовочный файл library.h, насколько я понял заголовочный файл является чем-то вроде интерфейса и в нем должны быть указаны принимаемые параметры. Есть так же метод в библиотеке, разделяющий строку:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <algorithm>
#include <math.h>
#include "library.h"
 
using namespace std;
 
vector<string> split(const string &str, const string &del, const bool empty = true) {
    vector<string> result;
    if (del.empty()) 
    {
        result.push_back(str);
        return result;
    }
    string::const_iterator sBegin = str.begin();
    string::const_iterator sEnd;
 
    while (true)
    {
        sEnd = search(sBegin, str.end(), del.begin(), del.end());
        string temp(sBegin, sEnd);
        if (empty || !temp.empty())
            result.push_back(temp);
 
        if (sEnd == str.end())
            break;
        sBegin = sEnd + del.size();
    }
    return result;
}
В .h файле пытаюсь написать
C++
1
2
3
4
5
6
7
8
#pragma once
 
ref class library
{
public:
    library(void);
    std::vector<std::string> split(const std::string &str, const std::string &del, const bool empty);
};
Но выдает кучу ошибок:

Ошибка 4 error LNK2020: неразрешенная лексема (06000002) library::split C:\Users\FanAs\Documents\Visual Studio 2010\Projects\TestProject1\TestProject1\ library.obj TestProject1
Ошибка 3 error LNK2020: неразрешенная лексема (06000001) library::.ctor C:\Users\FanAs\Documents\Visual Studio 2010\Projects\TestProject1\TestProject1\ library.obj TestProject1
Ошибка 1 error LNK2005: "class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > __cdecl split(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,bool)" (?split@@YA?AV?$vector@V?$basic_string@D U?$char_traits@D@std@@V?$allocator@D@2@@ std@@V?$allocator@V?$basic_string@DU?$ch ar_traits@D@std@@V?$allocator@D@2@@std@@ @2@@std@@ABV?$basic_string@DU?$char_trai ts@D@std@@V?$allocator@D@2@@2@0_N@Z) уже определен в library.obj C:\Users\FanAs\Documents\Visual Studio 2010\Projects\TestProject1\TestProject1\ TestProject1.obj TestProject1
Ошибка 2 error LNK2005: "class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > __cdecl split(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,bool)" (?split@@$$FYA?AV?$vector@V?$basic_strin g@DU?$char_traits@D@std@@V?$allocator@D@ 2@@std@@V?$allocator@V?$basic_string@DU? $char_traits@D@std@@V?$allocator@D@2@@st d@@@2@@std@@ABV?$basic_string@DU?$char_t raits@D@std@@V?$allocator@D@2@@2@0_N@Z) уже определен в library.obj C:\Users\FanAs\Documents\Visual Studio 2010\Projects\TestProject1\TestProject1\ TestProject1.obj TestProject1
Ошибка 5 error LNK1120: 2 неразрешенных внешних элементов C:\Users\FanAs\Documents\Visual Studio 2010\Projects\TestProject1\Debug\TestPro ject1.exe TestProject1

Что я сделал неправильно?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.09.2012, 21:20
Ответы с готовыми решениями:

Написать сигнатуры индексатора класса коллекции объектов, относящихся к абстрактному классу Animal
1. сигнатура индексатора класса коллекции объектов, относящихся к абстрактному классу Animal 2. сигнатуру автореализованого свойства...

Извлечение класса из библиотеки
подскажите возможно ли как то извлечь определенный класс из библиотеки классов со всеми связанными элементами(и т.д.) в автоматическом или...

Производный класс от класса из библиотеки
Приветствую. Как использовать приватные методы класса наследованного от абстрактного класса из подключенной dll библиотеки? using...

3
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
12.09.2012, 21:26
Цитата Сообщение от FanAs Посмотреть сообщение
Что я сделал неправильно?
неправильно то что начали писать код, сначала нужно разобраться, а потом писать код
короче: Литература C++
0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
12.09.2012, 21:32
Во-первых, ref перед словом class. Я не уверен в смысле его для классов, но смутно догадываюсь, что это для передачи по ссылке. В общем, если это надо, то это делается точно не тут.

Во-вторых, в cpp-файле с реализацией надо указывать, метод какого класса определяется (жирным):
vector<string> library::split(const string &str, const string &del, const bool empty = true) {
Иначе линкер посчитал, что это просто глобальная функция. А метод library остался неопределённым, потому и пфф.

(В-третьих, его можно запихать в namespace и не городить классы.)
0
12.09.2012, 21:36

Не по теме:

Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Во-первых, ref перед словом class. Я не уверен в смысле его для классов, но смутно догадываюсь, что это для передачи по ссылке. В общем, если это надо, то это делается точно не тут.
это C++/CLI

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.09.2012, 21:36
Помогаю со студенческими работами здесь

Взаимодействие окна и библиотеки класса WPF
Всем доброго времени суток, я новичек в WPF и это мой самый первый проект. Проект мой это что-то типа магазина, есть БД созданная в Access....

Создание класса, описывающего работу библиотеки
Создать класс имитирующий следующую ситуацию: Библиотека (главный объект) имеет номер общегородской, адрес по которому она находится и...

Создание класса с использованием библиотеки String
Подскажите как создать класс что бы в объекте использовался тип стринг

Сформировать правильный вызов класса из библиотеки
Прошу помощи. Начинаю осваивать C# и столкнулся с одной проблемой: Есть необходимость в использовании библиотеки для устройств Овен...

Как создать экземпляр класса библиотеки
есть сервер создаю прослушку ChannelServices.RegisterChannel(new HttpChannel(60000)); ServerAccess1 ser = new...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru