草庐IT

c++ - 具有常量变量的类的多个实例对常量使用相同的内存?

如果我有一个像这样定义多个常量变量的类......classSomeClass{public:SomeClass():SOME_CONSTANT(20),ANOTHER_CONSTANT(45),ANOTHER_CONSTANT2(25),ANOTHER_CONSTANT2(93){}private:constintSOME_CONSTANT;constintANOTHER_CONSTANT;constintANOTHER_CONSTANT2;constintANOTHER_CONSTANT3;是否会优化此类的多个实例以指向常量的同一内存?或者我可以通过将每个常量设为静态来节省内存吗?

c++ - 如何在 C++ 中初始化嵌套类的构造函数

我在初始化嵌套类构造函数时遇到问题。这是我的代码:#includeusingnamespacestd;classa{public:classb{public:b(charstr[45]){cout我得到的错误是:fun.cpp:21:30:error:nomatchforcallto'(a::b)' 最佳答案 你可能想要这样的东西:classa{public:a():title(b("")){}//....};这是因为title已经是a的成员,但是您没有它的默认构造函数。要么写一个默认构造函数,要么在初始化列表中初始化它。

c++ - 具有模板类的函数模板特化

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:partialspecializationoffunctiontemplate我无法在任何地方找到我的问题的解决方案,因为如果我使用我想出的关键字进行搜索,将会为我提供适合不同问题的解决方案。我知道这一定是以前问过的,只是找不到解决方案。假设我有一个函数模板:templateprint(anyvalue);我可以像这样专门化它,比如说int:templateprint(intvalue){std::cout但现在的问题是,我希望它也能与vector一起使用。由于vector类是模板类,因此变得困难。像这样专门

c++ - 如何检查继承类的指针?

假设我们有两个类:多态类A和继承自类A的类B。如何检查类A的指针是否指向类B的对象? 最佳答案 假设runtimetypeinformation(RTTI)已启用,您可以使用dynamic_cast将指针转换为B*,然后查看是否返回非空值:A*ptr=...//somepointerif(dynamic_cast(ptr)){//ptrpointstoanobjectoftypeBoranytypederivedfromB.}另一种方法是使用typeid:if(typeid(*ptr)==typeid(B)){//ptrpoints

c++ - 正确使用工厂类的标准 move

我想创建一个如下所示的工厂类,但我不确定这是使用std::move的正确方法。我不想使用太多的shared_ptr,因为在另一个shared_ptr中的shared_ptr真的很难看,有时还会让人困惑......选项1:classFoo{public:Foo(Foo&&f){...}}classFooFactory{public:staticFoo&&createFoo(...){Footemp(...);returnstd::move(temp);}}main(){Foof=FooFactory::createFoo(...);}选项2:classFooFactory{public:

c++ - 为什么类的方法不能访问我类的某些字段?

我尝试执行linked_ptr.这是一项学习任务。这是我的代码的一部分:templateclasslinked_ptr{public://***************linked_ptr(linked_ptrconst&other){p=other.p;left_ptr=&other;right_ptr=other.right_ptr;if(other.right_ptr!=nullptr){(other.right_ptr)->left_ptr=this;}other.right_ptr=this;}templatelinked_ptr(linked_ptrconst&other)

C++-14 使用 enable_if_t 选择整数类型模板化类的成员函数

我正在尝试基于一个完整的类模板参数启用不同的成员函数,如下所示:#includetemplatestructFoo{template=0>intbar(inti)const{returni;}template=0>intbar(inti,intj)const{returni+j;}};intmain(intargc,constchar**argv){Fooa;a.bar(1);Foob;b.bar(1,2);return0;}在c++-14模式下使用gcc5,编译失败,出现如下错误:tools/t1.cpp:Ininstantiationof'structFoo':tools/t1.c

c++ - 如何调用模板类的模板构造函数?

templatestructA{templateA(){}templatestaticvoidf(){}};intmain(){A::f();//okautoa=A();//errorC2062:type'double'unexpected}问题在代码中是不言而喻的。我的问题是:如何调用模板类的模板构造函数? 最佳答案 您不能直接调用类的构造函数。如果您无法从调用中推断出构造函数的模板参数,则无法调用该特定构造函数。您可以做的是创建某种可用于零开销扣除的类型包装器:templatestructtype_wrapper{};templ

c++ - 这个实例化类的地址?

我的目标是编写一个函数,返回调用它的实例化类的地址。我最初的猜测是返回&this但这并没有产生任何好的结果。非常感谢任何和所有建议!谢谢! 最佳答案 只需returnthis即可从该对象中返回该对象的地址。 关于c++-这个实例化类的地址?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5709841/

C++ 不同类型模板化类的显式模板化函数实例化

我正在尝试在T类型的模板化类中显式实例化U类型的模板化函数。我下面的代码生成了一个警告,并且链接器没有找到ReinterpretAs()的显式实例化。任何人都可以发现错误或建议如何执行此操作吗?我正在使用VC++2010。templateclassMatrix{public:templateMatrixReinterpretAs()const;};templatetemplateMatrixMatrix::ReinterpretAs()const{Matrixm;//...returnm;}//Explicitinstantiation.templateclassMatrix;temp