【发布时间】:2021-10-14 18:36:17
【问题描述】:
当输入字的大小大于或等于 5 但它没有发生时,我试图通过下面的函数 full 中的循环将指针向量 ptrVctor 的元素推回非指针向量 myvector2。当我输入少于 5 个单词时,程序运行良好。但是当我输入超过 5 个单词时,程序并没有按预期运行,而是终止了。
Main.hpp:
#ifndef WORDS_WORDS1_H
#define WORDS_WORDS1_H
#endif //WORDS_WORDS1_H
#include <iostream>
#include <string>
#include <unistd.h>
#include <vector>
#include <algorithm>
using namespace std;
template <class T>
class MyVector {
public:
void full(int i){
if (i >= 5) {//
for (int j=0; j<ptrVctor->size(); j++){
myvector2.push_back((*ptrVctor)[j]);//has problem
}
delete ptrVctor;
ptr_cout++;
}
}
void setItems2( T &a){
if (ptr_cout==0){
ptrVctor->push_back(a);
}
else{
myvector2.push_back(a);
}
}
int getUsed2 (){
if (ptr_cout==0)
return ptrVctor->size();
else
return myvector2.size();
}
void setUsed2 (int a){
used2 = a;
}
private:
int used2 =0;
int ptr_cout =0;
vector<T>* ptrVctor = new vector<T>();
vector<T> myvector2;
};
Main.cpp:
#include "main.hpp"
int main()
{
MyVector<string> v;
int count = 0;
string word;
while (cin >> word) {
count += 1;
v.setUsed2(count);
v.setItems2(word);
v.full(count);
}
cout << "Total: " << v.getUsed2() << '\n';
return 0;
}
【问题讨论】:
-
您在任何函数之外都有一个循环 - 这是不允许的
-
公共循环???大声笑
-
错误信息是什么?答案可能已经出现在您的屏幕上。
-
你熟悉consturctor这个概念吗?
-
为什么?你正在做一些奇怪的事情。你能解释一下这样做的理由是什么?