std::vector<int>
을 인스턴스 변수로 사용하는 클래스를 설계하고 있습니다. 런타임시 크기를 설정해야하기 때문에 std::vector
을 사용하고 있습니다. 여기에 내 코드의 관련 부분은 다음과 같습니다클래스 생성자에서 std :: vector를 설정하십시오.
my_class.h:
#include <vector>
using std::vector;
class MyClass {
int size;
vector<int> vec;
}
my_class.cc:
#include "my_class.h"
using std::vector
MyClass::MyClass(int m_size) : size(m_size) {
vec = new vector<int>(size,0);
}
나는 이러한 오류 메시지가 얻을 컴파일하려고 :
vector<int> temp(size,0);
vec = temp;
: I가 잘못된 라인을 변경할 때, 그러나
g++ -c -Wall my_class.cc -o my_class.o
my_class.cc: In constructor ‘MyClass::MyClass(int):
my_class.cc:4 error: no match for ‘operator=’ in ‘((MyClass*)this)->My_Class::vec = ((*(const allocator_type*)(& std::allocator<int>())), (operator new(24u), (<statement>, ((std::vector<int>*)<anonymous>))))’
make: *** [my_class.o] Error 1
을
이제 장애없이 컴파일되고 원하는 동작을 얻고 내 벡터에 액세스 할 수 있습니다.
vec[i] // i having been defined as an int yada yada yada
이 해결 방법은 정상이지만 작동하는 이유와 첫 번째 방법이 실패하는 이유를 알고 싶습니다. 미리 감사드립니다.
가'새로운 vector' 당신이 당신의 멤버 변수에 할당 할 수 있도록하기위한이 아닌 값을 포인터를 반환' – Chethan
당신이 자바에서 내 생각을 온 또는 C# 그리고 만약 그렇다면, 내 심각한 조언이다 vec' 좋은 C++ 서적을 먼저 입수하십시오. –
그리고 항상 copy + paste 메소드를 통해 실제 코드를 게시하십시오. 당신이 게시 한 코드는 불완전합니다 –