static-members 相关问题

静态成员是由同一程序的类或结构的所有实例共享的数据字段。即使不存在静态数据成员类的对象,也存在静态成员。 C ++的一个特性,大致相当于Java静态字段。

为什么类中可以初始化“const static int”成员,但不能初始化“const static other”成员?

看下面的代码,这个const static int num1 = 8;编译。然而,const static double num2 = 8.8;代码给出错误。他们的修饰符都是const static,那么为什么int可以工作,但是d...

回答 3 投票 0

出现“必须调用非静态成员函数的引用”的错误

我无法理解这个错误的含义以及导致它的原因。 这是我的代码,请帮我指出错误: 类解决方案{ 民众: bool sortbysec(常量对 我无法理解这个错误的含义以及导致它的原因。 这是我的代码,请帮我指出错误: class Solution { public: bool sortbysec(const pair<int,int> &a,const pair<int,int> &b) { return (a.second < b.second); } vector<int> topKFreAquent(vector<int>& nums, int k) { unordered_map<int,int> m; for(int i=0;i<nums.size();i++) { m[nums[i]]++; } vector<pair<int,int>> v; for(auto it = m.begin();it != m.end();it++) { v.push_back(make_pair(it->first,it->second)); } sort(v.rbegin(),v.rend(),sortbysec); v.resize(k); return v; } }; 我在 sort() 调用中收到错误,确切的错误是: Line 19: Char 34: error: reference to non-static member function must be called sort(v.rbegin(),v.rend(),sortbysec); ^~~~~~~~~ 我在 StackOverflow 上搜索并找到了不同代码的解释,但我无法正确理解它。 std::sort()需要一个Compare的函数对象,它可以是一个自由函数,一个静态类方法,一个仿函数等。可以按原样调用的东西。 您正在尝试传入一个非静态类方法,这将不起作用,因为 sortbysec() 需要一个对象实例来调用它,因此有一个隐藏的 this 参数,而 std::sort() 无法传入该参数调用该方法时。 解决错误的最简单方法是将 sortbysec() 设为 static,因为它不使用 Solution 类的任何成员,例如: static bool sortbysec(const std::pair<int,int> &a, const std::pair<int,int> &b) 否则,您可以使用 std::bind() 创建一个函子,将 Solution 对象与 sortbysec 方法联系起来,这样就可以在不指定对象的情况下调用它,例如: using namespace std::placeholders; std::sort(v.rbegin(), v.rend(), std::bind(&Solution::sortbysec, this, _1, _2) ); 或者,使用 lambda 来捕获 this,例如: std::sort(v.rbegin(), v.rend(), [this](const std::pair<int,int> &a, const std::pair<int,int> &b){ return sortbysec(a, b); } ); 在 C++14 及更高版本中可以通过使用 auto 进行一些简化,例如: std::sort(v.rbegin(), v.rend(), [this](const auto &a, const auto &b){ return sortbysec(a, b); } ); 而不是这个: sort(v.rbegin(),v.rend(),sortbysec); 这个: sort(v.rbegin(), v.rend(), [this](const pair<int, int>& p1, const pair<int, int>& p2) { return this->sortbysec(p1, p2); }); 或者正如评论所说,只需将排序函数声明为静态即可。 此外,您的代码仍然无法通过此更改进行编译,因为 v 的类型为 vector<pair<int,int>> 并且与您的返回类型 <vector<int> 不匹配

回答 2 投票 0

C++17文档哪里说类静态成员函数有外部链接?

我看到一些声明静态成员函数有外部链接。 但是,我找不到C++17官方文档中的声明。有人知道吗? 如果有人提供来自 c++17 的行

回答 1 投票 0

为什么不能通过子类访问私有静态字段?

来自 MDN 文档: 私有静态字段有一个限制:只有定义了私有静态字段的类才能访问该字段。当您...

回答 1 投票 0

为什么私有静态字段不像私有实例字段那样被继承?

来自 MDN 文档: 私有静态字段有一个限制:只有定义了私有静态字段的类才能访问该字段。当您...

回答 1 投票 0

error LNK2001: 未解析的外部符号“private: static class

error LNK2001: 未解析的外部符号“private: static class irrklang::ISoundEngine * GameEngine::Sound::_soundDevice” (?_soundDevice@Sound@GameEngine@@0PAVISoundEngine@irrklang@@A) 我不能...

回答 4 投票 0

C++ 静态常量成员覆盖

考虑以下内容。 结构 A { 静态常量 X = 1; 静态无效 printX() {std::cout << "X " << X << std::endl; }; }; struct B: public A { static cons...

回答 7 投票 0

从点源文件设置静态成员

虽然从点源 ps1 文件中获取静态成员的值总是有效,但设置静态成员似乎不一致。 测试.ps1: A类 { 静态$值 A() { [一]...

回答 1 投票 0

如何初始化函数方法指针的静态数组 c++

我有一个类包含与数学运算相对应的公共静态方法。该类是这样实现的 班级测试 { 民众: 测试(){}; 〜测试(){}; 输入...

回答 1 投票 0

一个类不能有自己的静态 constexpr 成员实例吗?

这段代码给我不完整的类型错误。 问题是什么?不允许一个类拥有其自身的静态成员实例吗? 有没有办法达到相同的结果? 结构尺寸 { ...

回答 4 投票 0

受保护的静态成员变量

我最近在处理一些类文件,我发现成员变量曾被设置为保护静态模式,如protected static $_someVar,并像static::$_someVar那样访问。 ...

回答 2 投票 13

c++是否保证头初始化的静态constitut成员在不同编译单元和库中共享一个实例?

让我们考虑一个代码头: class uid { public: uid () {++i; } static int i; }; class foo { public: const static uid id; } source: static int uid::i = 0; 这个头可以是......

回答 1 投票 0

我不能使用静态std :: queue? [重复]

efeitos;),但是我尝试了几种方法,但得到的一件事是一个错误:...

回答 1 投票 0

如何在多个源文件中使用静态成员结构?

我需要在多个源文件中使用一个结构,该结构是我的类的静态成员。这是一个精简的示例:头文件名称空间NS {类Foo {公共:静态结构Bar {...

回答 1 投票 0


使用什么代替Java中的finalize()

让我们考虑以下代码:class Table {private static int number_of_Tables = 0; public Table(){++ number_of_Tables; } public void finalize(){--number_of_Tables; } public static int ...

回答 1 投票 0

静态方法内存分配

我们有两个分类heap和stack。创建对象时,对象的内存存储在堆中。如果该类具有静态方法,可以使用类名调用该方法,该怎么办。如果对象是...

回答 3 投票 11

类模板静态数据成员定义/声明/初始化

我知道这个问题已经问过几次了,我一直在阅读类似的文章:初始化模板化类的静态成员如何声明/定义/初始化静态成员变量...

回答 1 投票 1

类型的私人数据成员的静态成员

在下面的代码,类A具有私有数据成员。我需要定义这种结构的阵列和类份额A.所有的物体之间的整个阵列所以,我已经定义了一个指针...

回答 2 投票 2

如何在实例访问静态成员?

下面是代码,我一直在挣扎与小时,想法是跟踪创建多少个实例,但也使可以调用静态方法和变化/更新静态成员。有 ...

回答 3 投票 8

© www.soinside.com 2019 - 2024. All rights reserved.