草庐IT

static成员

全部标签

C++ 模板静态成员指针初始化

我有一个模板类,它有一个指向成员的静态指针,如下所示:templateclassQueue{T*head;T*tail;staticT*T::*pnext;};我的问题是如何编写指向成员的静态指针的初始化程序。我尝试了明显的情况:templateT*Queue::*pnext(nextptr);但这没有用。有什么想法吗? 最佳答案 你真的需要一个与模板参数具有相同值的模板静态成员变量吗?唯一的用途是它的值在程序的整个生命周期内发生变化,但我真的想不出任何情况会产生比造成困惑更多的好处。

c++ - 从基类指向成员的指针类型

我对成员指针有疑问。以下代码无法使用OracleSolarisStudio12.2的CC和cygwinGCC4.3.4进行编译,但可以使用MicrosoftVisualC++2010:structA{intx;};structB:publicA{};templateclassBar{public:templatevoidfoo(MT::*p);};intmain(int,char*[]){Barbbar;bbar.foo(&B::x);return0;}在倒数第二行,上述两个编译器都未能找到Bar::foo(intA::*)的匹配项.我写了一个简单的测试来确认表达式的类型&B::x实际

c++ - 在 Vim 中为 C++ 类创建 getter 和 setter 成员

我正在创建一个包含许多double(或其他类型,类型无关紧要)成员的类。classCalcParameters{public:CalcParameters(){}~CalcParameters(){}//gettersandsettershereprivate:double_param1;double_param2;...};是否可以在Vim中编写一个脚本来为每个参数自动生成公共(public)getter和setter?喜欢doubleparam1()const{return_param1;}voidsetParam1(doubleparam1){_param1=param1;}..

c++ - 成员函数模板放在哪里

定期让我感到沮丧的C++方面是决定模板在头文件(传统上描述接口(interface))和实现(.cpp)文件之间的位置。模板通常需要放在header中,公开实现,有时还需要引入额外的header,而这些header以前只需要包含在.cpp文件中。我最近又遇到了这个问题,下面是一个简化的例子。#include//for~Counter()andcountAndPrint()classCounter{unsignedintcount_;public:Counter():count_(0){}virtual~Counter();templatevoidcountAndPrint(constT

C++中类的6个默认成员函数【构造函数】 &&【析构函数】

文章目录前言构造函数构造函数的概念构造函数的特性析构函数前言在学习C++我们必须要掌握的6个默认成员函数,接下来本文讲解2个默认成员函数构造函数如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。classDate{};构造函数的概念首先我们看下面的代码来引入一下构造函数classDate{public: voidInit(intyear,intmonth,intday) { _year=year; _month=month; _day=

c++ - 模板化成员函数 typedef 无法编译

#include#includeusingnamespacestd;voidprintstr(conststring&s){coutclassTest{public:typedefvoid(*Func)(constA&);};typedefvoid(*Func)(conststring&);templatevoidbind(Test::Funcf,//在上面的代码中,我尝试使用另一个类中的函数指针typedef。如图所示,它没有编译,但是其他两行中的任何一行都没有注释,而不是Test::Funcf,。行,它编译得很好!这是我不能用C++做的事情吗?需要什么语法?使用g++4.4.3,我

c++ - 请求 Y 的非类类型 Z 的成员 X

当尝试编译以下C++代码片段时(下面是完整的源代码)A::A(istream&i){vectorwords(istream_iterator(i),istream_iterator);words.begin();}我遇到了错误istream_it.cpp:12:error:requestformember‘begin’in‘words’,whichisofnon-classtype‘std::vector>(std::istream_iterator,longint>,std::istream_iterator,longint>)’我知道这个错误通常是由于不小心使用无参数运算符声明函数

C++0x decltype 推导成员变量常量失败

考虑以下代码:templateclassB{};templateBf(T&t){returnB();}classA{classC{};Cc;public:A(){}decltype(f(c))get_c()const{returnf(c);}};intmain(){Aa;a.get_c();}当我尝试编译它时,出现错误:test.cpp:Inmemberfunction'BA::get_c()const':test.cpp:31:46:error:conversionfrom'B'tonon-scalartype'B'requested似乎在decltype中,编译器不知道这是一个co

c++ - 成员函数的相互返回类型(C++)

在C++中是否可以有两个类,我们称它们为A和B,这样A就有一个成员函数f返回类B的对象,并且B有一个成员函数g返回类的对象>A?(下面的文字只是为了表明我“完成了我的功课”。)问题只是当第一个定义类中的函数返回类型不完整时,如何编写这些函数的签名。前向声明在这里没有帮助,因为对象是按值返回的。是的,我知道所有的变通方法(friend全局函数,通过指针返回,...),但我只想知道上面的接口(interface)是否可以在C++中实现。举个例子,假设我试图在A类上重载operator()以返回B,在B类上重载返回A。因为我正在重载运算符,所以我必须按值返回(好吧,除非我想要动态分配hell

用于在编译时确定成员数量的 C++ 宏/元程序

我正在开发一个具有基于消息/异步代理类架构的应用程序。将有几十种不同的消息类型,每种都由C++类型表示。classmessage_a{longlongidentifier;doublesome_value;classsomething_else;...//manymoredatamembers}是否可以编写允许在编译时计算类中数据成员数量的宏/元程序?//例如:classmessage_b{longlongidentifier;charfoobar;}bitsetthebits;我不熟悉C++元编程,但是boost::mpl::vector可以让我完成这种类型的计算吗?