vector<vector<clickable> >
유형의 벡터를 채우는 데 문제가 있습니다. 컴파일러는 vector<clickable>
을 push_back이 변수의 선언과 동일한 함수에서 발생하는 한 그 변수에 push_back을 되돌려 놓았지만 변수가 .h 파일로 선언되고 push_back이 클래스의 다른 함수에서 실행된다.구조체의 2D 벡터를 올바르게 푸는 데 문제가 있습니다. (C++)
다음 예제에서는 동일한 함수에서 방금 선언 된 vector<vector<clickable> >
에서 push_back을 호출하고 .h 파일에서 선언 된 push_back을 호출한다는 점을 제외하고는 루프가 완전히 동일해야합니다. 어떤 작품의
예 (이 메인 함수에서, 그러나 어떤 기능으로 작동합니다.) :
vector<vector<clickable> > clicks;
for(int i = 0; i < 10; i++){
vector<clickable> click;
for(int j = 0; j < 10; j++){
click.push_back(clickable(Rect(Point(50,50),5,10),"blar"));
}
clicks.push_back(click);
}
작동하지 않는 것의 예 :
Gui.h :
#include <vector>
//...
struct clickable {
Rect rect;
string msg;
bool visible;
clickable(Rect rectangle, string message){
rect = rectangle;
msg = message;
visible = true;
}
};
//...
class Gui{
public:
//...
void load_environment();
//...
private:
vector<vector<clickable> > ship;
//...
}
Gui.cpp :
#include "Gui.h"
//...
void Gui::load_environment(){
for(int i = 0; i < 10; i++){
vector<clickable> click;
for(int j = 0; j < 10; j++){
click.push_back(clickable(Rect(Point(50,50),5,10),
"blar"));
}
ship.push_back(click);
}
}
//...
나는 그것이 내 운영자에게 과부하를주지 않는 것과 관련이있을 것이라고 생각하지만, 그것이 문제의 원인인지 또는 그것이 있다면 과부하해야하는지에 대해서는 실제로 생각하지 못한다.
편집 여기 오류의 텍스트입니다 :
Gui.cpp:47: error: no matching function for call to ‘std::vector<std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::allocator<std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >::push_back(std::vector<clickable, std::allocator<clickable> >&)’ /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:602: note: candidates are: void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, _Alloc = std::allocator<std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >]
어떤 오류가 발생합니까? – EboMike