Ich habe eine Funktion geschrieben, um einen Satz in Worte zu teilen, aber etwas ging schief, nachdem ich damit arbeiten wollte. mainwindow.cpp:Wie löst man einen nicht definierten Verweis auf die eigene C++ - Memberfunktion?
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <qdebug.h>
#include <vector>
#include <iostream>
using namespace std;
vector <QString> myvector;
vector<string>::iterator it;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_addButton_clicked()
{
QString str = ui->textEdit->toPlainText();
//qDebug() << str;
vector<string> v = split(str.toStdString());
for(int i = 0; i < myvector.size(); i++){
ui->listWidget->addItem(myvector[i]);
}
}
vector<string> split(const string s)
{
vector<string> myvector;
typedef string::size_type string_size;
string_size i = 0;
while (i != s.size()) {
while (i != s.size() && isspace(s[i]))
++i;
string_size j = i;
while (j != s.size() && !isspace(s[j]))
j++;
if (i != j) {
myvector.push_back(s.substr(i, j - i));
i = j;
}
}
return myvector;
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <vector>
#include <iostream>
using namespace std;
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
std::vector<string> split(const string s);
private slots:
void on_addButton_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
hier Fehler:
undefined reference to
MainWindow::split(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)
Für ein viel einfacheres Leben verwenden Sie 'std :: unique_ptr' für Ihren 'ui' Typ. Ansonsten müssen Sie beim Kopieren Ihres Objekts vorsichtig sein. –
Bathsheba
Ich sehe keine MainWindow :: Split-Implementierung. Ich sehe eine Split() - Implementierung, aber nicht eine als Mitglied einer Klasse – UKMonkey
Voting zu schließen, wie ein Tippfehler; Sie haben vergessen, die Funktion in der cpp-Datei zu qualifizieren. 'vector split (const string s) => vektor MainWindow :: split (const string s)' –
NathanOliver