저는 C++과 특히 데이터 구조의 초보자입니다. 이 프로젝트는 잘린 시리즈 (이와 비슷한 것)로 작업하고 있습니다. 이 이상한 편집 오류가 발생하고 그것이 무엇을 말하고 있는지 잘 모르겠습니다. 범인이 될 수 있도록 복사 생성자를 만들기 전에 프로그램이 정상적으로 실행되고있었습니다. 나는 힘든 시간을 보내면서 만들었지 만 그것이 내가 어떻게되는지 확신 할 수 없다.복사 생성자 C++ 컴파일 오류
이 오류는 다음과 같이 그렇다고 같습니다
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/ostream:1077:1: note:
candidate template ignored: could not match
'basic_string<type-parameter-0-0, type-parameter-0-1, type-parameter-0-2>'
against 'Series'
operator<<(basic_ostream<_CharT, _Traits>& __os,
^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/ostream:1094:1: note:
candidate template ignored: could not match
'shared_ptr<type-parameter-0-2>' against 'Series'
operator<<(basic_ostream<_CharT, _Traits>& __os, shared_ptr<_Yp> const& __p)
^
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/ostream:1101:1: note:
candidate template ignored: could not match 'bitset<_Size>' against
'Series'
operator<<(basic_ostream<_CharT, _Traits>& __os, const bitset<_Size>& __x)
코드 :
#include <iostream>
#include <vector>
using namespace std;
class Series {
private:
size_t degree;
vector <double> coefs;
public:
Series():degree(0){ }
Series(size_t d): degree(d){
for(int i = 0; i < (degree+1); i++){
coefs.push_back(0.0);
}
}
Series(double term){
coefs[0] = term;
}
Series(size_t d2,vector <double> newcoeffs): Series(d2) {
for (int i = 1; i < (d2+1); i++) {
coefs.at(i) = newcoeffs.at(i-1);
}
}
Series(const Series & rhs) {
degree = rhs.degree;
vector <double> coefs;
for (int i = 1; i < (degree+1); i++) {
coefs.at(i) = rhs.coefs.at(i);
}
}
~Series() {
coefs.clear();
}
void print(ostream & out) const{
if (degree == 0) {
return;
}
for (int i = 1; i < degree+1; i++)
out << coefs[i] << "x^" << i << " + ";
out << coefs[0];
}
};
ostream & operator <<(ostream & out, const Series & s){
s.print(out);
return out;
}
int main(){
vector <double> v {2.1,3.5,6.2};
vector <double> z {1.1,2.3,4.0};
Series two(3,z);
Series one(two);
cout << one << end;
cout << two << endl;
return 0;
}
'coefs.at (I) = rhs.coefs.at (i)는, 컨테이너가이 같은'가능성이 세그먼트 오류로 이어질 것 전에 초기화되지 않았습니다. – informaticienzero
<< 연산자를 friend 연산자로 선언하고 클래스 외부에서 정의해야한다고 생각합니다. –
@informaticienzero 지금 libm ++ abi.dylib : 유형 std :: out_of_range의 캐치되지 않는 예외로 종료 : 트랩을 중단합니다 : 6, 이것과 관련이 있습니까? 어떻게 수정해야합니까? –