如何解决对自己的C++成员函数的未定义引用?
How to solve undefined reference to own C++ member function?
我已经编写了将句子拆分为单词的函数,但是在我想使用它之后出了点问题。 主窗口.cpp :
#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;
}
主窗口.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
这是错误:
对
MainWindow::split(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)
的未定义引用
在 MainWindow 中声明一个成员函数,然后使用它,但您可以定义:
vector<string> split(const string s)
这是一个独立的功能。 可能最容易更改为:
vector<string> MainWindow::split(const string s)
不过,更好的解决方案是在MainWindow
类之外声明split
(它与 MainWindow 无关,它只是一个有用的 litte 实用程序函数(,并且不考虑定义。
我还会将参数更改为const string& s
,以节省复制字符串(我同意 Bathsheba - 使用 std::unique_ptr 来处理删除(。
相关文章:
- 如何使用指针传递给函数的数组中对象的函数成员
- c++构造函数成员初始化:传递参数
- 创建 std::函数,它返回具有函数成员值的变量.分段错误
- 如何在C++通过公共函数访问私有函数成员?
- 解释了构造函数成员初始化列表
- 调用std::函数成员时内存损坏
- 是否可以为模板类的模板函数成员设置别名?
- 捕获 lambda 函数C++成员变量
- 构造函数成员初始值设定项跨成员列出,安全吗?
- 获取与在模板参数中传递的函数成员类型相同的类
- 如何从公共函数成员访问地图私有成员
- C 构造函数成员分配优化
- 使用命名空间进行函数成员定义
- 函数成员作为 CUDA 内核的参数
- 模板基类函数成员的别名
- 函数成员中用于void和继承的enable_if
- 头文件中是否定义了一个很长的Class函数成员
- 类内/构造函数成员初始化
- 使用指向部分专用函数成员的指针自动填充向量
- 指向函数成员的指针