聪明的人猿 2024-10-28 09:41 采纳率: 88.9%
浏览 156
已结题

缺少 类模板 "std::vector" 的参数列表

报错 E0441 缺少 类模板 "std::vector" 的参数列表
具体代码如下

#pragma once
#include <iostream>
#include<mysql.h>
#include<thread>
#include<cstring>
#include<map>
#include <vector>

using namespace std;


class PrepareBinder {
private:
    std::vector paramBinds;//预处理的参数绑定
public:
    /**
    * 绑定的参数集的大小
   * @param resultBindNum
    */
    explicit PrepareBinder(int prepareBindNum) {
        paramBinds.resize(prepareBindNum);//初始化绑定参数列表
    }
    std::vector& getParamBinds() {
        return paramBinds;
    }
    /**
    * 绑定整型
   * @param pos
    * @param value
    */
    void bindValue(int pos, const int& value) {
        paramBinds[pos].buffer_type = MYSQL_TYPE_LONG;
        paramBinds[pos].buffer = (void*)&value;
        paramBinds[pos].is_unsigned = false;
    }
    /**
    * 绑定无符号整型
   * @param pos
    * @param value
    */
    void bindValue(int pos, const unsigned int& value) {
        paramBinds[pos].buffer_type = MYSQL_TYPE_LONG;
        paramBinds[pos].buffer = (void*)&value;
        paramBinds[pos].is_unsigned = true;
    }
    /**
    * 绑定字符串
   * @param pos
    * @param value
    */
    void bindValue(int pos, const std::string& value) {
        paramBinds[pos].buffer_type = MYSQL_TYPE_STRING;
        paramBinds[pos].buffer = (void*)value.c_str();
        paramBinds[pos].buffer_length = value.size();
    }
};

此代码的目的是对MySQL库的返回值进行处理,std::vector的作用是构造一个容器存储与处理数据类型。
使用std::vector报错 E0153 表达式必须具有类类型,但它具有类型 "int" 报错位置


paramBinds[pos].buffer_type = MYSQL_TYPE_LONG;
paramBinds[pos].buffer = (void*)&value;
paramBinds[pos].is_unsigned = false;

尝试过使用auto,但auto不可使用

  • 写回答

1条回答 默认 最新

  • 聪明的人猿 2024-10-28 15:03
    关注

    修改std::vector paramBinds为std::vector paramBinds;//预处理的参数绑定

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月5日
  • 已采纳回答 10月28日
  • 创建了问题 10月28日