例如,我有一个班级
class A
{
public:
template<class T, class... Args>
void set(Args&&... args);
private:
std::shared_ptr<Member1Type> m_member1;
std::shared_ptr<Member2Type> m_member2; // Member types are all different.
};
Run Code Online (Sandbox Code Playgroud)
我希望我能用它
A a;
a.set<Member1Type>(args... to construct Member1Type);
Run Code Online (Sandbox Code Playgroud)
喜欢的
make_shared<T>(args...);
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在实现该方法时将成员类型链接到正确的成员.谢谢!
我有一个简单的类,它没有派生类型,也没有与其他类的继承关系。
class A
{
virtual void f() {}
}
Run Code Online (Sandbox Code Playgroud)
我想知道“虚拟”方法实际上是否真的不是虚拟的,所以该类与
class A
{
void f() {}
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
C++:空类对象的大小是多少?
我有一个没有数据的类,如下所示
class A {};
Run Code Online (Sandbox Code Playgroud)
我用它来定义一个对象
A a;
Run Code Online (Sandbox Code Playgroud)
我认为对象"a"有一个地址,对吗?它会占用一些记忆吗?如果是这样,它占用了多少字节?
如果对象"a"的类型为void,会发生什么.非常感谢!
我希望MyVector可以选择std :: vector或boost :: container :: vector.怎么实现呢?我可以使用宏,但我被告知他们不是很安全.谢谢.
#define MyVector std::vector
// #define MyVector boost::container::vector
Run Code Online (Sandbox Code Playgroud) 根据Mats Petersson的结果,我做了一些测试.我没有必要通过定义宏来打开和关闭断言.我的结论是:
<cassert>,<vector>,<memory>等等,需要一点编译时间.我们不需要关心.<QWidgets>(Qt头包含其所有小部件).这需要花费大量时间进行编译.[原帖]
如果每个文件都包含"assert.h",是否需要很长的编译时间?我认为关于"math.h"或其他常见文件的类似问题.我不喜欢预编译的标题.当我有一个Vector3D类来表示具有x,y,z分量的3D空间中的矢量时,会发生这种情况.该课程几乎用于所有地方.我有一个函数名称component(int i)在i0和2之间断言.出于性能原因,我没有把它的实现放在cpp文件中.因此"assert.h"几乎包含在所有地方.
#pragma once
#include <assert.h>
/// A vector in a 3D space with 3 components: x, y, and z.
class Vector3D
{
public:
Vector3D(float x = 0, float y = 0, float z = 0)
{
m_component[0] = x;
m_component[1] = y;
m_component[2] = z;
}
float x() const {return m_component[0];}
float y() const {return m_component[1];}
float z() const {return m_component[2];} …Run Code Online (Sandbox Code Playgroud) 例如:
template<unsigned number>
struct A
{
template<class T>
static void Fun()
{}
};
Run Code Online (Sandbox Code Playgroud)
并想要专门化A <1> :: Fun()
template<>
A<1>::Fun<int>()
{
/* some code here. */
}
Run Code Online (Sandbox Code Playgroud)
不起作用.怎么做?谢谢.
例如,我有一个类Document,它有一个私有成员QUndoStack,有一个信号cleanChanged().当成员发出信号时,我希望包含类Document发出一个具有相同名称的信号,或者来自成员的信号可以转移到包含类.因此,外界知道cleanChanged发生了.
如何设置第一列的最小宽度QFormLayout?我可以QGridLayout通过 using来做到这一点QGridLayout::setColumnMinimumWidth(int, int),但找不到一种方法来做到这一点QFormLayout。
我有一个命名空间层次结构,并希望为一些长命名空间名称提供缩写.例如,我有
Math::Geometry::OneDimension::
Run Code Online (Sandbox Code Playgroud)
我想用Ge的Geometry,并D1为OneDimension因此以下工作
Math::Ge::OneDimension::
Math::Geoemtry::D1::
Math::Ge::D1::
Run Code Online (Sandbox Code Playgroud)
是否可以使用命名空间别名来执行此操作?
c++ ×10
qt ×3
templates ×3
alias ×1
c++11 ×1
c++14 ×1
compilation ×1
inheritance ×1
namespaces ×1
qlayout ×1
qtgui ×1
signals ×1