[英]C++: I can't start my class, I get class was not declared in this scope error
我在gcc編譯器中使用了netbeans,當我嘗試聲明類的對象並運行代碼時,我得到的類未在此作用域錯誤中聲明,這是我在main.cpp中的代碼:
#include <cstdlib>
#include <iostream>
#include <cstring>
using namespace std;
int main() {
Clock r;
r.processH();
return 0;
}
class Clock {
private:
int h, m, s;
char conv[];
Clock() {
h = 0;
m = 0;
s = 0;
conv[10] = {};
}
public:
void processH() {
int r =0;
while(r <= 2){
conv[r] = 'I';
if(conv == "III") {
conv[0] = 'V';
conv[1] = 'I';
r++;
break;
}
r++;
}
cout<< r;
}
};
我究竟做錯了什么? 我不是經驗豐富的OOP程序員。
首先,您應該在使用類的名稱之前對其進行聲明。 在您的情況下,它應該位於main
功能之上。
其次,您聲明的Reloj
函數沒有返回類型,這是非法的。
正確的代碼如下所示:
#include <cstdlib>
#include <iostream>
#include <cstring>
using namespace std;
class Clock {
private:
int h, m, s;
char conv[];
void Reloj() {
h = 0;
m = 0;
s = 0;
conv[10] = {};
}
public:
void processH(int ent) {
int r =0;
while(r <= 2) {
conv[r] = 'I';
if(conv == "III") {
conv[0] = 'V';
conv[1] = 'I';
r++;
break;
}
r++;
}
cout<< r;
}
};
int main() {
Clock r;
r.processH(5);
return 0;
}
只是對Sergey的回答的補充:您還可以向前聲明該類。 只需添加行
class Clock;
在您的main
功能告訴編譯器該類存在之前。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.