пытаясь использовать struct для файла aheader и включить его в основной файл и файл класса - PullRequest
0 голосов
/ 13 апреля 2019

я использовал struct в файле aheader и включил ее в main.cpp и в class.h, и это cpp, но я получил некоторые ошибки, ошибки

Ошибка 1, ошибка C2511: «void fkingatm :: test1 (user [])»: перегруженная функция-член не найдена в «fkingatm»

Ошибка 2, ошибка C3861: 'test1': идентификатор не найден

Ошибка 3 IntelliSense: идентификатор «test1» не определен

STRUCT_HEADER.h

#ifndef STRUCT_HEADER
#define STRUCT_HEADER
struct user {
    int arr[10];
};
#endif

main.cpp

#include "STRUCTHEADER.h"
int main(){
    user users[10];
     test1(users);

fkingatm.h (файл класса)

#ifndef FKINGATM_H
#define FKINGATM_H
#include "STRUCTHEADER.h"
class fkingatm
{
public:
    void test1(user);
};
#endif

fkingatm.cpp

#include "fkingatm.h"
void fkingatm::test1(user users[10]){
    for (int i = 0; i < 10; i++){
        cin >> users[0].arr[i];
    }
    for (int i = 0; i < 10; i++){
        cout<< users[0].arr[i]<<endl;
    }
}

1 Ответ

0 голосов
/ 13 апреля 2019

Ваш main.cpp оценивается как: (Предполагая, что STRUCT_HEADER не #defined до STRUCT_HEADER.h и что вы только что ошиблись в написании своего STRUCTHEADER.h в этом вопросе)

struct user {
    int arr[10];
};

int main(){
    user users[10];
     test1(users);

С #includeвставляет только то содержимое файла, которое вы поместили перед ним, в строку, на которой оно написано.Он не увидит ваше определение test1.

Вы должны попробовать:

#include "fkingatm.h"
#include "STRUCTHEADER.h"


int main(){
    user users[10];
    fkingatm f;
    f.test1(users);
    return 0; 
}

Теперь, это решает 2-ю и 3-ю ошибки, которые у вас были.Для 1-й ошибки вам необходимо отредактировать объявление вашего void

void test1(user); 

в

void test1(user[10]); 

edit: это потому, что вы используете свой test1 (пользователь user [10]) как тот, который принимает пользователя [10], а не пользователя.И пользователь [10] имеет другой тип и данные сам по себе.Различные данные в том смысле, что user [10] на самом деле является указателем (число, представляющее адрес памяти), а user является классом / структурой (которая является только пространством имен и в действительности не имеет точного физического представления в памяти).

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