| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2003 人关注过本帖
标题:构造函数初始化列表提示: 缺少类模板std::vector的参数列表;不能出现类型 ...
只看楼主 加入收藏
wolfcan
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2021-12-9
结帖率:87.5%
收藏
已结贴  问题点数:5 回复次数:2 
构造函数初始化列表提示: 缺少类模板std::vector的参数列表;不能出现类型名
定义一个类如下,如果构造一个对象不会报错。

程序代码:

class BCLT
{
public:
    BCLT():photo(3,std::vector<cv::Mat>(2,cv::Mat())) {};
    ~BCLT() {};
    std::vector<std::vector<cv::Mat>> photo;
private:

};



如果将上面构造函数中的初始化列表修改为下面代码,则初始化列表中提示两个红色的波浪线。第一个是std::vector,提示“缺少类模板std::vector的参数列表”,按理说我圆括号里面已经说明是cv::Mat类型。第二个是cv::Mat,提示“不能使用类型名”,加上圆括号就正常了,有什么区别吗?圆括号里面也没有写cv::Mat的类型呀。
程序代码:

class BCLT
{
public:
    BCLT():photo(3,std::vector(2,cv::Mat)) {};
    ~BCLT() {};
    std::vector<std::vector<cv::Mat>> photo;
private:

};



谢谢,求教。
搜索更多相关主题的帖子: vector std 提示 Mat 列表 
2022-01-01 20:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:5 
先说第二个问题,
cv::Mat 是一个类型,
cv::Mat() 是一个值(匿名的对象)。
比如,
int a = 123 是正确的,
int a = int() 是正确的,
但 int a = int 是错误的。

在改正了第二个问题的前提下,如果你使用C++17或更新的标准,那么就可以编译通过;
如果你使用C++14或更老的标准,那么老实地将模板参数补上。

程序代码:
#include <vector>

namespace cv
{
    class Mat {};
}

class BCLT
{
public:
    BCLT():photo(3,std::vector(2,cv::Mat())) {};
    ~BCLT() {};
    std::vector<std::vector<cv::Mat>> photo;
};

int main()
{
}
2022-01-02 11:27
wolfcan
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2021-12-9
收藏
得分:0 
回复 2楼 rjsp
谢谢版主
2022-01-02 20:59
快速回复:构造函数初始化列表提示: 缺少类模板std::vector的参数列表;不能出现 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017129 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved