Вызов метода класса внутри другого C ++ - PullRequest
3 голосов
/ 20 марта 2019

Я пытаюсь установить значение для переменной myVar (расположенной внутри myClass1) из myClass2 (в качестве промежуточного класса). Однако я получаю ошибку компиляции. Вот моя попытка:

#include <iostream>
using namespace std;
class myClass1{

    int myVar = 5;
    public:
        myClass1();

        myClass1(int x){ myVar = x; }

        int getmyVar(){ return myVar; }
        void setmyVar(int y){ myVar = y; }


};

class myClass2{

    int myScore = 10;
    myClass1 class1;
public:
    myClass2();

    myClass2(int x){ myScore = x; }

    int getmyScore(){ return myScore; }
    void setmyScore(int y){ myScore = y; }
    myClass1 getmyClass1(){ return class1; }


};

int main(){

    myClass2 class2;
    class2.getmyClass1().setmyVar(40);

    return 0;
}

Ошибка:

Error 1 error LNK2019: unresolved external symbol "public: __thiscall myClass2::myClass2(void)" (??0myClass2@@QAE@XZ) referenced in function _main C:\Users\Ahmed\Desktop\VB\Test2\Test2\Main.obj Test2

1 Ответ

0 голосов
/ 20 марта 2019

См. Изменения, помеченные HERE

#include <iostream>
using namespace std;
class myClass1{

    int myVar = 5;
    public:
    myClass1() {} // HERE

        myClass1(int x){ myVar = x; }

        int getmyVar(){ return myVar; }
        void setmyVar(int y){ myVar = y; }


};

class myClass2{

    int myScore = 10;
    myClass1 class1;
public:
    myClass2() {} // HERE

    myClass2(int x){ myScore = x; }

    int getmyScore(){ return myScore; }
    void setmyScore(int y){ myScore = y; }
    myClass1& getmyClass1(){ return class1; }  // HERE


};

int main(){

    myClass2 class2;
    class2.getmyClass1().setmyVar(40);

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...