小编use*_*020的帖子

如何在指针关联时编写无错误的代码?

例如

struct A
{
    void foo() {};
};

struct B
{
    B() {}

    void setA(A* a) { mA = a; }
    foo()           { mA->foo(); }

    A *mA;
};
Run Code Online (Sandbox Code Playgroud)

内部有一个A关联的(只是一个地址)B.而且B::mA一定不能null.我经常忘记setA并且引入了错误.有什么好的做法可以避免它?setA以下怎么样?

void B::setA(A& a) { mA = &a; }
Run Code Online (Sandbox Code Playgroud)

c++ pointers

0
推荐指数
1
解决办法
127
查看次数

如何向向量插入兼容的唯一指针?

例如,我有两个类AB.B源于A.

class A {};
class B : public A {};
Run Code Online (Sandbox Code Playgroud)

我有一个唯一指针的向量,A我可以推回一个指向向量的唯一指针.

vector<unique_ptr<A>> vA;
unique_ptr<A> a(new A);
vA.push_back(std::move(a));
Run Code Online (Sandbox Code Playgroud)

(1)如何推回一个独特的指针B

vector<unique_ptr<A>> vA;
unique_ptr<B> b(new B);
vA.push_back(std::move(b)); //?
Run Code Online (Sandbox Code Playgroud)

(2)如果向量是for B,如何推回一个唯一的指针A(假设它是向下的)

vector<unique_ptr<B>> vB;
unique_ptr<A> a(new B);
vB.push_back(std::move(a)); //?
Run Code Online (Sandbox Code Playgroud)

c++ unique-ptr

0
推荐指数
1
解决办法
304
查看次数

如何在 VC++ 中使用多核计算进行循环?

不知道多核并行化。但是对于简单的循环,它可能几乎没有修改。对于以下示例,如何在 VC++ 中使用多核计算进行简单循环?

#include <iostream>
#include <vector>
#include <ctime>
using namespace std;

void foo(int n, double* a, double* b, double *c, double*d, double* e, double* f, double* g)
{
    for (int i = 0; i < n; ++i)
    {
        a[i] = b[i] * a[i] + c[i] * (d[i] + e[i] + f[i] + g[i]);
    }
}

int main()
{
    int m = 1001001;
    vector<double> a(m), b(m), c(m), d(m), f(m);

    std::clock_t startcputime = std::clock();
    for (int i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

c++ multicore visual-c++

0
推荐指数
1
解决办法
575
查看次数

调用与类方法同名的全局函数?

我有全局函数,它们与成员方法具有相同的名称.两者都将在同一范围内使用.我如何区分它们?在全局函数中添加前缀'g'吗?我知道它对于全局变量是常规的,但对全局函数不确定.

c++

-1
推荐指数
1
解决办法
752
查看次数

即使我分配变量,"使用未分配的局部变量"错误?

在下面的示例中,编译器生成错误"使用未分配的局部变量r",即使我在使用它之前在循环中分配变量.为什么编译器会生成此错误?

static void Main(string[] args)
{
    float r;

    for (int i = 0; i < 100; i++)
        r = i; // assigned here

    Console.WriteLine(r); // error: use of unassigned local variable            
}
Run Code Online (Sandbox Code Playgroud)

c# compiler-errors

-1
推荐指数
1
解决办法
817
查看次数

如何使现有的类成为类模板?

例如,我有几个现有的2D(二维)和3D情况的点类,比如class Point2Dclass Point3D.我希望它是模板像template<int D> class Point这里Point<2>相当于或直接使用Point2DPoint<3>等同于或直接使用Point3D.我不想重新实现那些现有的类,因为我的真正的类不像类点那么简单,它是第三方代码,比如

using Point<2> = Point2D;
using Point<3> = Point3D;
Run Code Online (Sandbox Code Playgroud)

有办法吗?

c++ templates c++11

-1
推荐指数
1
解决办法
66
查看次数

如何公开私有基类的方法?

例如,我有一个包含许多方法的基类

class A
{
public:
    void f1();
    int f2() const;
    float f3(double a, char b) const;
    ...
};
Run Code Online (Sandbox Code Playgroud)

而B类是私下派生自A.我希望A的一些方法是公开的,怎么做呢?

class B : private A
{
public:
    using A::f1; 
    using A::f2;

    template<class... Args>
    RETURN f3(Args&&... args) CONSTNESS  { return A::f3(args...); }
    // how to specify return and constness automatically

    ... 
};
Run Code Online (Sandbox Code Playgroud)

我尝试以上方式,他们不工作.模板方式需要自动指定return和constness.

问我错误的问题,在我的实际案例中,A是一个模板类

template<class T>
class A
{
public:
    void f1();
    int f2() const;
    float f3(double a, char b) const;
    ...
};
Run Code Online (Sandbox Code Playgroud)

B来自A

 template<class T>
 class B : public A
 { …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance templates c++11

-2
推荐指数
1
解决办法
67
查看次数

如何编写比较矢量和聚合的方法?

我有一个矢量.我想将它与聚合物进行比较,看看它们是否相等.例如

vector<int> v{0, 1, 2};

bool b = equal(v, {0, 1, 2}); // how to write a method to implement it???
Run Code Online (Sandbox Code Playgroud)

c++ vector

-4
推荐指数
2
解决办法
55
查看次数