Несовместимое объявление функции - PullRequest
1 голос
/ 17 марта 2011

Я застрял, почему я получаю ошибку: объявление несовместимо ...

'void A :: function (int, int, std :: vector <_Ty> *)': перегруженфункция-член не найдена в ошибке «A» C2061: синтаксическая ошибка: идентификатор «вектор» 1> с 1> [1> _Ty = точка 1>]

//cpp file
void A::function(int a, int b, vector<B> *p)
{    

}

//header file

class B
{
public:
     int q;
};
class A
{     
public:    
     void function(int a, int b, vector<B> *p);    
};

Ответы [ 3 ]

4 голосов
/ 17 марта 2011

Проблемы !!!!

void function(int a, int b, vector<B> *line); и void function(int a, int b, vector<B> & line); - это две разные подписи (прототипы функций).

Что еще более важно, в C ++ нет такого ключевого слова Class.

3 голосов
/ 17 марта 2011

Это потому, что заголовок функции должен быть точно таким же.

//cpp file 
void A::function(int a, int b, vector<B>* c) { }  

//header file  
Class B {
public:
    int q; 
}; 
class A {
public:
    void function(int a, int b, vector<B> *line);     
}; 

или:

//cpp file 
void A::function(int a, int b, vector<B>& c) { }  

//header file  
Class B {
public:
    int q;
};
class A {
public:
    void function(int a, int b, vector<B> &line);     
}; 

Однако при вызове функции в первом случае вы должны заменить * на & при передаче объекта, чтобы локальный указатель получил адрес переданного объекта. Или передайте указатель вручную.

1 голос
/ 17 марта 2011

Ну, для начала, вам не хватает точки с запятой в конце B. Кроме того, вы используете Class вместо class.

Для самой подписи ваше объявление (в файле заголовка) принимает указатель на vector, а ваше определение (в файле .cpp) - ссылку.

//cpp file
void A::function(int a, int b, vector<B>& c) // // Arguments are an int, an int, and a vector<B> reference.
{    

}

//header file

class B
{
public:
     int q;
};

class A
{     
public:    
     void function(int a, int b, vector<B>& line);
        // Same arguments.
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...