c++ - 如何从静态 vector 访问类元素?

标签 c++ class vector static member

我有一个 class Town 的静态 vector 在同一个类中,我正在尝试访问它的元素。

代码:

// town.h
class Town
{
    public:
        static int nrOfTowns;
        static std::vector<Town> *towns;
        std::string name;
};

int Town::nrOfTowns = 0;
std::vector<Town> *Town::towns = NULL;

// main.cpp
/* code */
Town::towns = new std::vector<Town> (Town::nrOfTowns); // initializing vector
Town::towns[0].name; // gives me an error

我收到一个错误: class std::vector<Town>没有名为 name 的成员.

最佳答案

在您的代码中,towns 是一个指向 vector 的指针,但它可能应该是一个 vector :

// town.h
class Town
{
    public:
        static int nrOfTowns;
        static std::vector<Town> towns;
        std::string name;
};

int Town::nrOfTowns = 0;
std::vector<Town> Town::towns;

// main.cpp
/* code */
Town::towns.resize(Town::nrOfTowns);
Town::towns[0].name;

如果你真的想让它成为一个指针,你必须取消对指针的引用

// town.h
class Town
{
    public:
        static int nrOfTowns;
        static std::vector<Town> *towns;
        std::string name;
};

int Town::nrOfTowns = 0;
std::vector<Town> *Town::towns = nullptr;

// main.cpp
/* code */
Town::towns = new std::vector<Town> (Town::nrOfTowns); // initializing vector
(*Town::towns)[0].name; // gives me an error
delete Town::towns;

关于c++ - 如何从静态 vector 访问类元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62621106/

相关文章:

c++ - 正确使用c++标准队列

c++ - 如何判断我是否正在泄漏 COM 对象?

function - Lua函数参数是如何传递的?

java - 在没有构造函数的情况下初始化类时会调用什么?

r - 在 R 中的两个向量列表之间执行运算

C++11,仅将一个字段复制到 vector 中

c++ - C++ 中的程序如何通过使用 'system' 变量与 Linux 中的 shell 脚本交互?

c# - 是否可以从 C++ 应用程序调用 C# 应用程序?

C++模板类原型(prototype)、函数定义

python - 将函数应用于元组数组