EDIT : aList가이 코드에서 포인터로 참조되었지만 현재 동일한 문제가있는 현재 버전이 아닙니다.std :: vector는 코드 분할 후 밀어 넣을 객체를 참조하지 못합니다.
이 코드는 인터페이스 파일과 구현 파일에서 분리하려고하기 전에 완벽하게 작동했습니다. 하지만 컴파일러가 나눌 때 잘못된 매개 변수를 사용하여 push_back()을 호출한다고 컴파일러에서 알려줍니다. 그래서 나는 그것을 푸시하고있는 객체의 타입을 참조 할 수 없다는 것을 이해합니다. 물론 동일합니다 (물론 afaik : D). 내가 맞다,
#ifndef _MYHEADER_HPP_
#define _MYHEADER_HPP_
class A{
public:
std::string someString;
};
class B{
public:
std::vector<A> aList;
public:
void addA();
};
#endif /* _MYHEADER_HPP_ */
//implementation file
#include <string>
#include <vector>
#include "myheader.hpp"
void B::addA(){
A a;
a.someString = "Hola";
// Here compiler says : Invalid arguments 'Candidates are: void push_back(const A &)' line 18 Semantic Error
aList.push_back(a);
}
AFAIK, 표준 : : 벡터는 항상 밀어 객체의 복사본을 수행하고, 그 사본은 벡터에 저장됩니다, 그래서 그것을 할당 'A'인 스택의 문제가 아니라 생각 ?
내가 뭘 잘못하고있어? 감사합니다. .
어쩌면 다른 'A'정의를 참조 할 수 있습니까? –
표준 라이브러리에 A 클래스가 존재하지 않는다면, 나는 생각하지 않는다 :/ –
'aList'는 포인터가 아니기 때문에'aList.push_back (a);' – hmjd