c ++ не существует подходящего пользовательского преобразования из «myClass1» в «myClass1» - PullRequest
0 голосов
/ 03 октября 2011

Я очень плохо знаком с c ++ и был очень смущен, когда эта синтаксическая ошибка была отмечена Visual Studio 2010. Определения

class myClass1 {
    public: 
        myClass1();
}
class myClass2 {
    public:
        myClass2();
        void doSomething(myClass1 thing) {};
}

int main(int argc, char* argv[]) {
    vector<myClass1> arr;
    arr.resize(1);
    arr[0] = myClass1();
    myClass2 c2 = myClass2();
    c2.doSomething(arr[0]); //this line is being highlighted as giving the error in the title
};

Я просто смущен тем, что это значит.

Синтаксическая ошибка в строке, которую я прокомментировал, и она выдает ошибку «нет подходящего пользовательского преобразования из« myClass1 »в« myClass1 ».

Редактировать: извините за не ясность вопроса

1 Ответ

0 голосов
/ 03 октября 2011

Классы myClass * ничего не содержат / ничего не делают, поэтому трудно понять вашу цель. Ваш код не будет компилироваться, потому что конструкторы не определены. Вы всегда должны предоставлять минимум соответствующей информации (и не намного больше) в своих вставках кода.

Чтобы объявить экземпляр объекта myClass2 в стеке, просто выполните:

myClass2 c2;

Метод doSomething использует копию myClass1, что, вероятно, не то, что вам нужно. Конструктор копирования не определен (но копировать нечего). Плюс функция ничего не делает ...

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