클래스에 대한 할당이 있고 헤더 파일을 받았으며 클래스의 메서드를 구현해야합니다. 복사 생성자를 구현하고 = 연산자를 오버로드하는 데 문제가 있습니다. 다음 헤더 파일의 일부는 다음과 같습니다복사 생성자 오버로드 연산자
class MontaznaKuca
{
private:
double kvadratura;
string bojaFasade;
string vlasnik;
bool postojiVrt;
Kuhinja* kuhinja;
vector<Soba*> sobe; //Soba is a seperate class defined in another header
public:
MontaznaKuca(void);
MontaznaKuca(double kvadratura, string bojaFasade, string imaVrt);
MontaznaKuca(const MontaznaKuca& kuca);
~MontaznaKuca(void);
MontaznaKuca& operator=(const MontaznaKuca& kuca);
...
내 시도가 복사 생성자를 먹고 = 연산자가
MontaznaKuca::MontaznaKuca(const MontaznaKuca& kuca) : sobe(kuca.sobe.size())
{
kvadratura = kuca.kvadratura;
bojaFasade = kuca.bojaFasade;
vlasnik = kuca.vlasnik;
postojiVrt = kuca.postojiVrt;
kuhinja = new Kuhinja;
kuhinja = kuca.kuhinja;
for (size_t i = 0; i < kuca.sobe.size(); ++i)
sobe[i] = new Soba(*kuca.sobe[i]);
}
MontaznaKuca& MontaznaKuca::operator=(const MontaznaKuca& kuca) : sobe(kuca.sobe.size())
{
kvadratura = kuca.kvadratura;
bojaFasade = kuca.bojaFasade;
vlasnik = kuca.vlasnik;
postojiVrt = kuca.postojiVrt;
kuhinja = new Kuhinja;
kuhinja = kuca.kuhinja;
for (size_t i = 0; i < kuca.sobe.size(); ++i)
sobe[i] = new Soba(*kuca.sobe[i]);
return *this;
}
나는 웹 및 Visual Studio에 대한 몇 가지 코드를 공부하여 이런 짓을
에 과부하가 나에게 오류를 제공: constructor initializer lists are only allowed on constructor definitions
내가 완전히 잃어 버렸기 때문에 누군가이 두 가지 기능을 수행하는 방법을 설명 할 수 있습니까?
고맙습니다. 나는 마침내 내가 당신의 코드를 보았을 때 내가 잘못하고있는 것을 깨달았다. 내가 게시하고 많이 배운 게시물을 읽었습니다. 다시 도움을 주셔서 감사합니다. – nixpix