Ошибка компилятора C2653: не имя класса или пространства имен в Visual Studio 17

Я понимаю, что многие люди задают этот вопрос, и есть похожие на Stack Overflow, но я не могу понять их. Я надеюсь, что кто-то скажет мне, почему это происходит, но также и то, что происходит.

Я кодировал эту случайную программу, чтобы продемонстрировать, как отделить классы от основного файла, и я начал получать эту ошибку, и я пытаюсь понять, как ее исправить.

По сути, файл .cpp класса не работает, потому что каждая функция говорит, что класс в моем заголовочном файле не является классом или пространством имен, что неверно. Я просмотрел его десятки раз, и ничто не кажется неуместным, написанным неправильно или связанным неправильно, все файлы находятся в одном проекте и папке.

Соответствующие части кода:

main.cpp

#include "stdafx.h"#include <stdlib.h>
#include <iostream>
#include <time.h>
#include <cstdlib>
#include "IQclass.h"
using namespace std;int main()
{
IQclass IC;

srand(time(NULL));

IC.nameInput();
IC.multiplierSelection();
IC.setCycle();
IC.forLoop();

return 0;
}

IQclass.h

#ifndef IQCLASS_H
#define IQCLASS_Hclass IQclass
{
public:

//IQclass();

void nameInput();
void multiplierSelection();
void setCycle();
void calc();
void printIQ();
void randGen();
void forLoop();

};

#endif //IQCLASS_H

IQclass.cpp

#include "IQclass.h"#include "stdafx.h"#include <stdlib.h>
#include <iostream>
#include <time.h>
#include <cstdlib>

int y;
long int a;
int m;
int c;
char name[40];

using namespace std;

/* IQclass::IQclass()
{
cout << "\ninitializing...\n\n\n";  //dont ever do this i did it to be funny
typicaly constructers are used to set variables to a defualt state when the
object is created
_sleep(3000);
}

*/

void IQclass::nameInput()         (ERROR HERE Line 28)
{
cout << "What is your name?\n\n";
cin >> name;
}

void IQclass::multiplierSelection(){       (ERROR HERE Line 34)
cout << "\nWhat should the multiplier be?\n\n ";
cin >> m;
}

void IQclass::setCycle() {           (ERROR HERE Line 39)
cout << "\nwhat shoud the cycle be?\n\n";
cin >> c;
}

void IQclass::calc() {             (ERROR HERE Line 44)
a = y*m;
}

void IQclass::printIQ() {           (ERROR HERE Line 48)
cout << name << "'s IQ is probably: " << y << endl << "That times: " << m <<
" is " << a << endl << endl;
}

void IQclass::randGen() {                    (ERROR HERE Line 52)
y = rand() % 160;
};

void IQclass::forLoop() {            (ERROR HERE Line 56)
for (int x = 0; x < c;) {
randGen();
calc();
printIQ();
x = x + 1;
};
};

Ошибка:

C2653 'IQclass': is not a class or namespace name |File IQclass.cpp | line 28 |
C2653 'IQclass': is not a class or namespace name |File IQclass.cpp | line 34 |
C2653 'IQclass': is not a class or namespace name |File IQclass.cpp | line 39 |
C2653 'IQclass': is not a class or namespace name |File IQclass.cpp | line 44 |
C2653 'IQclass': is not a class or namespace name |File IQclass.cpp | line 48 |
C2653 'IQclass': is not a class or namespace name |File IQclass.cpp | line 52 |
C2653 'IQclass': is not a class or namespace name |File IQclass.cpp | line 56 |

1

Решение

когда я ввожу твой код в свой ноутбук (win7, VS2015). Такая же ошибка происходит.
Я просто немного изменяю в файле IQClass.cpp.

От:

#include "IQclass.h"#include "stdafx.h"

TO:

#include "stdafx.h"#include "IQclass.h"

Я думаю, что каждый раз мы должны сначала включать #include «stdafx.h».

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]