【问题标题】:Cannot access member functions of vector<int>无法访问 vector<int> 的成员函数
【发布时间】:2020-07-28 15:18:32
【问题描述】:

我已经尝试找出这个错误大约一个小时了。这可能是我忽略的一个非常明显的语法问题。这是我的第一个 C++ 项目,我对语言的结构没有很好的掌握。

这是我的头文件:

#pragma once
#include <vector>

class BoardState
{

private:
    std::vector<int> numbers;
    int SIZE;

public:
    BoardState();

    std::vector<int> getState();

    bool isZero();
};

下面是实现,在一个单独的文件中:

#include "BoardState.h"

BoardState::BoardState(){
    SIZE = 4;
    numbers.push_back(1);
    numbers.push_back(3);
    numbers.push_back(5);
    numbers.push_back(7);
}

std::vector<int> BoardState::getState() { return numbers; }

bool BoardState::isZero() {
    for (int i = 0; i < numbers.size(); i++) {
        if (numbers[i] != 0) { return false; }
    }
    return true;
}

这段代码真的很简单,所以我不知道是什么问题导致了错误。但是,在每个方法调用中,push_backsize,我都收到错误,说 class "std::vector" 没有成员“method_name_here”

我的背景是 Java,所以我的第一个想法是我无法调用这些方法,因为 numbers 没有初始化。但是,我在头文件中初始化 numbers 的任何尝试都会导致错误。我试过std::vector&lt;int&gt; numbers = { 1,3,5,7 };,我试过std::vector&lt;int&gt; numbers(4,0);,我什至尝试过创建一个数组并从中构造向量。所有这些尝试不仅导致错误,而且也没有修复方法调用。

我错过了什么?我是否需要初始化向量,或者我在头文件中的内容是否足够?任何建议在这里都会有所帮助,因为我在网上找不到任何关于类似错误的信息。我什至从 StackOverflow 中复制粘贴了有关类似问题的答案的代码,这也会产生错误。

编辑:我在保留错误的同时尽可能地减少了代码:

#include <vector>

class BoardState
{
    std::vector<int> numbers;
    BoardState() { numbers.push_back(1); }
    int getSize() { 
        int i = numbers.size(); 
        return i;
    }
};

numbers.push_back(1); 行上,我的编译器在标记“push_back”下划线,并突出显示它:

类“std::vector”没有成员“push_back”

int i = numbers.size();这一行,标记“大小”带下划线,错误为:

类“std::vector”没有成员“size”

我仍然不知道发生了什么。

编辑2:将方法调用放入构造函数和函数中。这改变了与 push_back() 相关的错误消息。

编辑 3:我发现了一些非常令人不安的事情。此代码在不同的编译器中运行良好。我从编辑 1 中复制粘贴了确切的代码,它运行没有问题。我认为问题一定出在 Visual Studio 而不是实际代码上。谢谢大家帮我解决这个问题。我想我只是要切换到不同的编译器并希望最好。

编辑 4:只是为了向 pm100 证明我的代码与我所说的完全一样,这是来自 Visual Studio 的屏幕截图。 Here it is.

除了主要方法,这是我在这个问题中提出的逐个字符。不过,我猜想为什么这不起作用。我修改了我的 Visual Studio 2019 版本,以便为大学课程运行 .386 汇编代码。虽然我认为我按照指南执行此操作而不影响其他任何内容,但它可能搞砸了 C++ 编译器的某些部分。

【问题讨论】:

  • 您能否发布相关代码的完整错误消息?
  • 我无法重现该问题:godbolt.org/z/1nPebq您使用的是什么系统,正如 Shaggi 所问,您能发布确切的错误消息吗?
  • 复制,我不能。 minimal reproducible example你必须提供。
  • 第一个错误是什么?
  • Visual Studio 可能有一些问题,但这段代码肯定不会。你是哪个版本的?

标签: c++ visual-studio vector


【解决方案1】:

我建议你可以选择Tools-&gt;Import and Export Settings-&gt;Reset all settings-&gt; Visual C++来恢复默认设置。

如果还是不行,可以重装VS。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    相关资源
    最近更新 更多