小编Lig*_*ica的帖子

为什么不能在函数参数列表中将匿名对象作为参数?C++

例如:

struct test
{};

void thing(test())
{}

int main()
{
   thing(test());
}
Run Code Online (Sandbox Code Playgroud)

这段代码会给我错误; 但是,下一个例子不会给我错误:

void thing(int())
{}

int main()
{
   thing(int());
}
Run Code Online (Sandbox Code Playgroud)

我的主要问题是,为什么第一个例子不可能而第二个例子是?最终,双方testint有类型,所以我想不出为什么声明的一个匿名对象testthing函数参数列表是不可能的,而声明类型的匿名对象intthing函数参数列表.

c++

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

在具有固定参数错误的函数中使用“va_start”

我的 nullPointcheck 函数:

template<typename T, typename... Args>
bool __nullPointCheck(T first, Args... args)
{
    bool ret = true;
    va_list vl;
    auto n = sizeof...(args);
    va_start(vl, n);
    for (auto i = 0; i <= n; ++i)
    {
        auto p = va_arg(vl, T);
        if (!p)
        {
            ret = false;
        }
    }
    va_end(vl);
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

但我收到 ndk 构建错误,如下所示:

'va_start' used in function with fixed args
va_start(vl, n);
Run Code Online (Sandbox Code Playgroud)

当我将 va_start 中的第二个参数更改为第一个参数时,如下所示:

va_start(vl, first);
Run Code Online (Sandbox Code Playgroud)

ndk-build导出报错如下:

     'va_start' used in function with fixed args
    va_start(vl, first);
    ^ …
Run Code Online (Sandbox Code Playgroud)

c++ variadic-functions c++11 ndk-build

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

为什么这样的数字:-1.7e + 007出现在结果中?

有人可以解释一下为什么这个奇怪的数字出现在编译器上吗?

它应该是这样显示的(我输入的数字):

10000000 + 12000000 + 15000000的加法是:XXXXX

10000000-12000000-15000000的减法是:XXXXX

10000000/12000000/15000000的除法是:XXXXX

10000000 * 12000000 * 15000000的乘法是:XXXXX

10000000 * 12000000 + 15000000-10的运算是:XXXXX

这就是给我看的:

1e + 007 + 1.2e + 007 + 1.5e + 007的加法为:3.7e + 007

1e + 007-1.2e + 007-1.5e + 007的减法为:-1.7e + 007

1e + 007 / 1.2e + 007 / 1.5e + 007的除法:5.55556e-008

1e + 007 * 1.2e + 007 * 1.5e + 007的乘法是:1.8e + 021

1e + 007 * 1.2e + 007 + 1.5e + 007-10的运算是:1.2e + 014

这是代码: …

c++

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

使用std ::?制作char**

我有一个需要const char**的opengl函数.所以基本上是一个字符串向量.我想知道是否可以使用C++标准库来完成,而不需要使用const char*哪个向量需要堆分配.

c++

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

如何检测是否已从PHP Google Checkout中购买了某些内容?

我正在制作一个以免费和付费形式提供的Web应用程序.我想让它检测用户是否使用Google Checkout支付付费版本,并启用付费功能.

我将如何在PHP中执行此操作?

更新我的数据库中已经有一个用户表,用户需要登录才能使用该应用程序.我还将创建一个名为purchase的表,其中包含以下内容:

  • userid内部使用的帐户ID
  • chitchat(应用程序的名称)NULL或Google订单ID

然后,当我需要检测用户是否已经购买它时,我会使用

$userid=esc($_SESSION["id"]); // esc is a function that returns the SQL escaped string
if($query=mysqli_query($link,"SELECT * FROM purchases WHERE userid='$userid'")&&mysqli_num_rows($query)>0){
    // The user has bought the paid version
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我的服务器遭到黑客攻击,我将如何确认Google的订单ID?

php web-applications google-checkout

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

如何解决这个MySql选择问题?

$_GET['id'] = $id1;
$result = mysql_query("SELECT * FROM example WHERE id = '$id1'");
while ($row = mysql_fetch_array($result)) {
   //some code
}
Run Code Online (Sandbox Code Playgroud)

为什么这段代码不起作用?它不服从这id='$id2'一点.它从表示例中获取所有内容.

我该如何解决?


示例表包含id,text,time rows.文件名是example.php?id=1.

php mysql database select

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

有什么不同的方法来重写这个jquery

我有这样的命令.

.css('display', 'block') 
Run Code Online (Sandbox Code Playgroud)

但是,我认为它也可以用不同的方式重写.例如,

.css('display : block') 
Run Code Online (Sandbox Code Playgroud)

这可能是也可能不正确.我不记得了.无论如何,你知道重写原始命令的不同方法吗?

jquery

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

c ++指向结构数组的指针

有人可以向我解释为什么这不起作用?

struct person {
  string name;
  int age;
};

// in function
person friends[NUM_OF_FRIENDS];
friends[0].name = "bob";
friends[1].name = "bill";
friends[2].name = "liz";
friends[3].name = "frank";
friends[4].name = "carl";
friends[0].age = 20;
friends[1].age = 30;
friends[2].age = 32;
friends[3].age = 10;
friends[4].age = 85;

// array of pointers

person (*friends_ptrs)[NUM_OF_FRIENDS] = &friends;

cout << friends_ptrs[0]->name << endl;

cout << friends_ptrs[1]->name << endl;
Run Code Online (Sandbox Code Playgroud)

"bob"打印正常,但"bill"会导致错误.如果没有找到"账单",怎么能"bob"打印?

我意识到我可以这样做:

person *friends_ptrs = friends;
Run Code Online (Sandbox Code Playgroud)

但后来我没有使用箭头符号,它违背了本练习的目的.

那么如何使用带箭头符号的指针访问friends []结构?

c++

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

防止将对象转换为除一种类型C++之外的任何对象

我定义了这个类:

template <class T>
class pure
{
public:
    pure(T const& attr) {
        this->attr = attr;
    }

    ~pure() {}

    T& operator=(T const& attr) {
        return attr;
    }

    operator T() {
        return this->attr;
    }

private:
    T attr;
};
Run Code Online (Sandbox Code Playgroud)

这是一个存储类型值的类T.当我想使用它的一个实例时,我得到attr(通过强制pure转换T)而不是实例(of pure)本身.

我的目标是使不能铸造比的类型以外的任何类型的类attr,它是T.

c++ casting

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

为什么我的简单编译会失败?

所以我只是从自制软件安装gcc,我有一个简单的代码:

#include <cmath>
#include <iostream>
#include <stdio.h>

int main()
{
    const int size = 256;
    double sinTable[size];

#pragma omp parallel for
    for(int n=0; n<size; ++n)
        sinTable[n] = std::sin(2 * M_PI * n / size);

#pragma omp parallel for
    for(int n=0; n<10; ++n)
    {
        printf(" %d", n);
    }
    printf(".\n");

    // the table is now initialized
}
Run Code Online (Sandbox Code Playgroud)

但是,当我编译时,我失败了:

    dhcp-18-189-47-44:openmp_code myname$ gcc-4.8 tmp2.cpp 
Undefined symbols for architecture x86_64:
  "std::ios_base::Init::Init()", referenced from:
      __static_initialization_and_destruction_0(int, int) in ccFbBrPl.o
  "std::ios_base::Init::~Init()", referenced from:
      __static_initialization_and_destruction_0(int, int) in ccFbBrPl.o
ld: …
Run Code Online (Sandbox Code Playgroud)

c++ openmp

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