小编hak*_*ami的帖子

只读结构?如何在结构中使用指针?

我对这个问题感到很疯狂.

我有这个自定义的结构

struct oneRectangle
{
    QString partName;
    QGraphicsRectItem * rectangle;
};
Run Code Online (Sandbox Code Playgroud)

我有一个List使用这个结构作为模板:

QList<oneRectangle> partList;
Run Code Online (Sandbox Code Playgroud)

在我追加struct的实体(没有init指针)后,我需要做这样的事情:

partList.at(index).rectangle = some pointer points to a QGraphicsRectItem
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个错误,说结构是一个只读结构.我首先尝试malloc指针,然后将其附加到列表中,但是当我为指针分配地址时,我仍然得到错误.这有什么问题?

c++ qt qt4

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

如何正确扩展此宏?

当我定义这个宏时:

#define SQR(x) x*x
Run Code Online (Sandbox Code Playgroud)

让我们说这个表达式:

SQR(a+b)
Run Code Online (Sandbox Code Playgroud)

此表达式将被宏替换,如下所示:

a+b*a+b
Run Code Online (Sandbox Code Playgroud)

但是,如果我++在表达式之前放置一个运算符:

++SQR(a+b)
Run Code Online (Sandbox Code Playgroud)

现在的表达是什么样的?这是++放置在SQR参数的每个部分吗?像这样:

++a+b*++a+b
Run Code Online (Sandbox Code Playgroud)

在这里我给出一个简单的程序:

#define SQR(x) x*x
int a, k = 3;
a = SQR(k+1) // 7
a = ++SQR(k+1) //9
Run Code Online (Sandbox Code Playgroud)

c c++ macros

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

为什么新的Formatter().format("%h",false)获得4D5?

根据输出,java boolean false等于10011010101和true等于4CF , 10011001111. 我不明白为什么java将这些值用于布尔值.究竟是什么布尔存储?

java boolean

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

CUDA推力减少是如此之慢?

我正在学习CUDA.今天,我在书中尝试了一些代码:CUDA Application Design And Development这让我感到惊讶.为什么CUDA推力如此之慢?这是代码和输出.

#include <iostream>
using namespace std;

#include<thrust/reduce.h>
#include<thrust/sequence.h>
#include<thrust/host_vector.h>
#include<thrust/device_vector.h>
#include <device_launch_parameters.h>

#include "GpuTimer.h"

__global__ void fillKernel(int *a, int n)
{
    int tid = blockDim.x * blockIdx.x + threadIdx.x;
    if(tid <n) a[tid] = tid;
}

void fill(int *d_a, int n)
{
    int nThreadsPerBlock = 512;
    int nBlock = n/nThreadsPerBlock + ((n/nThreadsPerBlock)?1:0);
    fillKernel<<<nBlock, nThreadsPerBlock>>>(d_a, n);
}

int main()
{
    const int N = 500000;
    GpuTimer timer1, timer2;

    thrust::device_vector<int> a(N);

    fill(thrust::raw_pointer_cast(&a[0]), N);

    timer1.Start();
    int sumA = …
Run Code Online (Sandbox Code Playgroud)

cuda thrust

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

标签 统计

c++ ×2

boolean ×1

c ×1

cuda ×1

java ×1

macros ×1

qt ×1

qt4 ×1

thrust ×1