gpt4 book ai didi

c++ - 如何为派生类对象声明迭代器?

转载 作者:行者123 更新时间:2023-11-30 04:29:30 28 4
gpt4 key购买 nike

我是否正确声明了派生类 r_iter 和 c_iter 的迭代器?在派生类中,r_iter 是二维 vector 的迭代器,c_iter 是二维 vector 的迭代器。

我收到以下错误,如果有人告诉我哪里错了,我将不胜感激

add_round_key.cpp:26:34: error: expected class-name before ‘{’ token
add_round_key.cpp:27:2: error: ‘dVector’ is not a template
add_round_key.cpp:27:11: error: ‘dVector’ is not a template
add_round_key.cpp:27:28: error: invalid use of ‘::’
add_round_key.cpp: In member function ‘void dVector::RotWord()’:
add_round_key.cpp:37:2: error: ‘r_iter’ was not declared in this scope
add_round_key.cpp:37:17: error: ‘class dVector’ has no member named ‘begin’
add_round_key.cpp:38:2: error: ‘c_iter’ was not declared in this scope





line# 26 class dVector:public std::vector {
line# 27 dVector <dVector <int> >::iterator r_iter;
dVector <int>::iterator c_iter;

public:
void RotWord();
void SubWord();
};

void dVector::RotWord() {
int temp ;
line# 37 r_iter = this->begin();
#38 c_iter = (*r_iter).end();
*(c_iter) = *(c_iter+4);
*(c_iter+4) = *(c_iter+8);
}


void dVector::SubWord(){
//function definition
}

int main (int argc, char *argv[])
{

/*wordArray is a 4x4 word array stored in column-order form*/
dVector <dVector <int> > wordArray(4,dVector<int>(40,0));
dVector <dVector <int> >::iterator ckIter,i ,j, row_iter;
dVector <int>::iterator ii,jj, col_iter;
wordArray.RotWord();
wordArray.Subword();
}

最佳答案

第 26 行:std::vector 是一个模板,您需要告诉它要专攻什么才能使其成为您可以继承的类。

第 26 行的好处:避免从 std 容器继承

第 27 行:dVector 是模板吗?如果不是,您就不能像它是一样使用它!

第 37-38 行:第 27 行和第 28 行中的错误导致 r_iterc_iter 未声明,因此您在这些行上遇到了错误。

p>

也就是说,这可能会帮助您完成您想要做的事情:

template<class T>
class dVector : public std::vector<T> {
typename dVector <dVector <T> >::iterator r_iter;
typename dVector <T>::iterator c_iter;

但建议仍然存在,don't inherit from std containers .

关于c++ - 如何为派生类对象声明迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9303780/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com