我有两个问题。
有人知道hpp文件是什么吗?为什么有人这样做?
我正在尝试实现一个扩展vector
但我想使用所有原始函数并为每个函数添加操作。 所以我写道:
#include <iostream>
#include <vector>
#ifndef _MY_PERSONAL_VECTOR
#define _MY_PERSONAL_VECTOR
class PersonalVec: public std::vector<int>{
public:
PersonalVec();
void push_back(const int& Val);
};
#endif
并在cpp文件中:
#include <iostream>
#include "PersonalVec.hpp"
using namespace std;
PersonalVec::PersonalVec(): std::vector<int>(){
}
void PersonalVec::push_back(const int& Val):vector<int>::push_back(Val){
cout<<"new improved vector";
}
所以在函数push_back中我试图调用向量push_back,但它无效。
任何人都有任何想法?
答案 0 :(得分:6)
- 有谁知道
醇>hpp
文件是什么?
.hpp 是C ++头文件的常用文件扩展名。
- 我正在尝试实现一个扩展
的类 醇>vector
You probably don't want to do that。标准库容器没有虚拟析构函数,并且不打算从中派生。你应该更喜欢:
哪个更好取决于你需要做什么。
答案 1 :(得分:2)
.hpp是一种命名约定,有时用于区分包含模板类和非模板类的头文件,或区分C代码和C ++代码。
您需要封装矢量并委托给它。
class PersonalVec{
public:
PersonalVec();
void push_back(const int& Val);
private:
std::vector<int> data;
};
void PersonalVec::push_back(const int& Val){
cout<<"new improved vector";
data.push_back(Val);
}
答案 2 :(得分:0)
A * .hpp文件是头文件。它与* .h文件没有什么不同,只是有些人喜欢这样命名,以便他们可以立即知道该文件是C头还是C ++头。
您只能在构造函数的定义中使用:stuff()
。您的方法定义应为:
void PersonalVec::push_back(const int& Val) {
vector<int>::push_back(Val);
cout << "new improved vector";
}