gpt4 book ai didi

c++ - 未在此范围内声明 C++

转载 作者:行者123 更新时间:2023-11-28 00:35:19 24 4
gpt4 key购买 nike

我在一个 C++ 项目中遇到了众所周知的错误“未在此范围内声明”。特别是“在此范围内未声明 vexp”。正如您在下面看到的,vexp 是一个在 Exploration 类中声明的 vector ,虽然我在 main 中包含了 Exploration.h,但 vexp 是不可访问的。另一方面,Exploration::vexp 是 Not Acceptable ,因为 vexp 不是静态的。 使 vexp 静态化是从 main 访问它的唯一方法吗???

#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

最佳答案

vexpExploration 的非静态成员.每个Exploration您创建的对象将有自己的 vexp成员。所以要访问vexp , 你需要有一个 Exploration目的。也就是说,以下将起作用:

Exploration exp1(false, 3.0f, 5);
Exploration exp2(true, 6.0f, 10);
exp1.vexp.push_back(exp2);

请注意,我正在访问 vexp exp1的成员与 exp1.vexp .那是属于那个特定的 vector Exploration目的。我正在推那个 vector exp2 .

您究竟需要做什么取决于您尝试做什么,我不确定。看来你没有完全掌握面向对象的原则。你应该很清楚,因为vexpExploration 的非静态成员, 它不存在直到你创建一个 Exploration目的。也就是说,每个 Exploration对象拥有更多容器 Exploration对象。

看起来好像您只想要一个 std::vector<Exploration>那不是 Exploration 的成员.所以你只想要一个 Exploration 的容器s,不属于其他人Exploration秒。为此,您只需执行以下操作:

int main()
{
std::srand (time(NULL));
std::vector<Exploration> vexp; // vexp has been moved here

for(int i=1; i<9; i++)
{
Exploration temp (0,3,3);
vexp.push_back(temp);
}
for(int j=0; j < vexp.size(); j++)
{
std::cout << vexp[j].Vertical;
std::cout << vexp[j].Horizontal;
std::cout << vexp[j].r;
std::cout << '\n';
}
}

请注意 vexp现在声明为 main 的本地功能,应从 Exploration 中删除类。

关于c++ - 未在此范围内声明 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21159252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com