我處於C++項目的中間,並且出現了「未在此範圍內聲明」的衆所周知的錯誤。特別是「vexp沒有在這個範圍內聲明」。正如你可以在下面看到的,vexp是在Exploration類中聲明的一個向量,雖然我在main中包含了Exploration.h,但是vexp不可訪問。另一方面,Exploration :: vexp不可接受,因爲vexp不是靜態的。 正在使vexp靜態從主要訪問它的唯一方法?未在此範圍內聲明C++
#include "exploration.h"
#include <iostream>
#include <vector>
int main()
{
std::srand (time(NULL));
for(int i=1; i<9; i++)
{
Exploration temp (0,3,3);
vexp.push_back(temp);
}
for(int j=0; j<(int)Exploration::vexp.size(); j++)
{
std::cout << Exploration::vexp[j].Vertical;
std::cout << Exploration::vexp[j].Horizontal;
std::cout << Exploration::vexp[j].r;
std::cout << '\n';
}
return 0;
}
和標題:
#ifndef EXPLORATION_H
#define EXPLORATION_H
#include<vehicle.h>
#include <vector>
class Exploration : public vehicle
{
public:
std::vector <Exploration> vexp;
Exploration(bool,float,int);
int r;
void DangerCheck();
bool expaxis(int k);
};
#endif // EXPLORATION_H
一旦你縮進代碼正確,你看到你忘記關閉主函數上的大括號。 – RedX
爲什麼你要訪問'vexp'就好像它是第二個for循環中的靜態成員? – Ancurio
除此之外,課堂設計看起來很奇怪。只有公衆成員?主要有公衆成員?這根本就不是封裝。一旦你解決了這個問題,你可能不再需要這個問題的答案了。 – stijn