커뮤니티,C++에서 매개 변수 유형을 생성자로 해석합니다.
저는 C++의 새로운 기능을 제공하므로 저를 도울 수 있기를 바랍니다. 나는 이미 Java로 작성했으며 많은 유사점이 있지만이 오류를 이해할 수는 없습니다. PrimitiveBase.cpp의 Constructor에서 컴파일러가 Type Color를 인수가없는 생성자로 해석하는 것으로 보입니다. 인수 및 기능이없는 두 번째 생성자를 정의하면 오류가 사라집니다. 하지만 함수에 대한 매개 변수 해독에 대한 내 이해와 일치하지 않습니다. 여기
/home/christian/Documents/EBV/ebv-S03-G01/src/Graphics2D/PrimitiveBase.cpp: In constructor 'PrimitiveBase::PrimitiveBase(std::vector<Coordinate>, Colour)':
/home/christian/Documents/EBV/ebv-S03-G01/src/Graphics2D/PrimitiveBase.cpp:5:74: error: no matching function for call to 'Colour::Colour()'
/home/christian/Documents/EBV/ebv-S03-G01/src/Graphics2D/PrimitiveBase.cpp:5:74: note: candidates are:
/home/christian/Documents/EBV/ebv-S03-G01/src/Graphics2D/Colour.hh:9:2: note: Colour::Colour(int, int, int, std::string)
/home/christian/Documents/EBV/ebv-S03-G01/src/Graphics2D/Colour.hh:9:2: note: candidate expects 4 arguments, 0 provided
/home/christian/Documents/EBV/ebv-S03-G01/src/Graphics2D/Colour.hh:6:7: note: Colour::Colour(const Colour&)
/home/christian/Documents/EBV/ebv-S03-G01/src/Graphics2D/Colour.hh:6:7: note: candidate expects 1 argument, 0 provided
코드가 당신이해야 할 수도 있습니다 :
가 그녀의 오류입니다 PrimitiveBase.cpp
#include <Graphics2D/PrimitiveBase.hh>
#include <Graphics2D/Coordinate.hh>
#include <Graphics2D/Colour.hh>
PrimitiveBase::PrimitiveBase(std::vector<Coordinate> coord, Colour colour) { //Here the error happens
this->coord=coord;
this->colour=colour;
}
Colour PrimitiveBase::GetColour() {
return colour;
}
std::vector<Coordinate> PrimitiveBase::GetCoordinates() {
return coord;
}
void PrimitiveBase::SetColour(int red, int green, int blue) {
colour.SetColours(red,green,blue);
}
void PrimitiveBase::SetCoordinates(std::vector<Coordinate> newCoord) {
coord = newCoord;
}
Colour.hh
#ifndef COLOUR_HH_
#define COLOUR_HH_
#include <string>
class Colour {
public:
Colour(int red, int green, int blue, std::string name);
//Colour(){}; Constructo I seem to need
//~Colour();
void SetColours(int red, int green, int blue);
static Colour black();
static Colour red();
static Colour green();
static Colour blue();
private:
std::string name;
unsigned char rgb[3];
};
#endif
내가 r에 eally는 Java에서 지난 2 년 동안 이것을했기 때문에 이해하지 못하고 마지막 연습에서도 C++로 작업했습니다. 당신이 나를 도울 수 있다면 :)
생성자의 매개 변수 목록 뒤에 * mem-initializer-list *를 사용해야합니다 클래스의 모든 데이터 멤버를 구성 *.'PrimitiveBase :: PrimitiveBase (std :: vector coord, color color) : coord (coord), color (color) {}'(이것은 매개 변수의 이름과 데이터 멤버는 동일하지만 고유 한 이름을 제공하는 것이 더 좋음) –
dyp
PrimitiveBase에 대한 hh를 표시 할 수 있습니까? –
DyP 와우, 고마워. 정말 빠른 답변이었고 도움이되었습니다. –