小编twj*_*twj的帖子

Qt C++:不同文件中相同命名空间的多个 Q_NAMESPACE

  • 我有两个enum。它们位于相同的命名空间中,但头文件不同。
  • 为了使它们可用于 Qt 元类型系统,我尝试这样做:
//C1.h
#include <QObject>
namespace SW
{
Q_NAMESPACE
enum class Enum1 {A, B};
Q_ENUM_NS(Enum1)
}
Run Code Online (Sandbox Code Playgroud)
//C2.h
#include <QObject>
namespace SW
{
Q_NAMESPACE
enum class Enum2 {A, B};
Q_ENUM_NS(Enum2)
}
Run Code Online (Sandbox Code Playgroud)
//main.c
#include <QDebug>
#include <QMetaEnum>

#include "C1.h"
#include "C2.h"

int main(int argc, char *argv[]) {
    auto me1 = QMetaEnum::fromType<SW::Enum1>();
    qDebug() << "me1 valid:" << me1.isValid();

    auto me2 = QMetaEnum::fromType<SW::Enum2>();
    qDebug() << "me2 valid:" << me2.isValid();
}
Run Code Online (Sandbox Code Playgroud)
  • 通过上面的内容,我得到了重复的符号链接器错误。因为 和moc_C1.omoc_C2.o定义了staticMetaObject结果Q_NAMESPACE
  • 我发现两个标头中的命名空间都必须包含 …

c++ qt

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

查找数组代码C语言的GCD

我正在尝试用C编写程序.程序应该找到给定数组的GCD(最大公约数).我试图使用最小数量的数组来找到GCD.我想知道我上一次循环的错误.我没有想办法如何检查除法是否给出任何小数点以便停止循环.这是我的代码

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int A[10]={112, 160, 180, 240, 288, 32, 480, 96, 60, 72};
    int i;
    int j;
    int minimum = A[0];
    int GCD;
    int temp;

    for (i=1;i<9;i++)
    {
        if( A[i] < minimum)
        {
            minimum = A[i];
        }
    }

    for (i=1; i < minimum/2; i++)
    {
        for (j = 0; j < 9;j++)
        {
            GCD = 2*i;
            temp = ((A[j])/(GCD));
            int check = temp%1;
            if (check == 0)
                break;
        }
    }

    printf("The Greates Common Denominator …
Run Code Online (Sandbox Code Playgroud)

c arrays for-loop greatest-common-divisor

2
推荐指数
1
解决办法
4万
查看次数

标签 统计

arrays ×1

c ×1

c++ ×1

for-loop ×1

greatest-common-divisor ×1

qt ×1