小编Ash*_*wal的帖子

const 对象作为数据成员与普通变量

我试图创建一个类,该类将使用将通过模板传递的Container类的对象。Comparator

所以我正在做类似的事情:

template<typename T>
class Container{
    const T c;
};


struct Comparator{
    public:
    bool operator()(const int a, const int b)const{
        return a < b;
    }
};

int main(){
    Container<Comparator> container;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译此代码时,出现以下错误:

e.cpp:28:27: error: uninitialized const member in 'class Container<Comparator>'
   28 |     Container<Comparator> container;
      |                           ^~~~~~~~~
e.cpp:16:13: note: 'const Comparator Container<Comparator>::c' should be initialized
   16 |     const T c;
      |      
Run Code Online (Sandbox Code Playgroud)

为了摆脱这个错误,我所做的只是在Comparator类中添加了一个默认构造函数:

struct Comparator{
    public:
    Comparator(){
        
    }
    bool operator()(const int a, const int b)const{ …
Run Code Online (Sandbox Code Playgroud)

c++

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

如何使 flutter 应用程序从任何键盘读取贴纸、GIF 等?

我正在开发一个聊天应用程序,我希望我的应用程序支持分享贴纸、GIF 等。如何在 flutter 中实现这一点?

android flutter

7
推荐指数
0
解决办法
357
查看次数

如何在firestore中创建自定义id文档(Firebase模块化SDK(v9))

我们如何使用新的模块化 SDK V9 在 firestore 中创建具有自定义 id 的文档?

const register = async function (adminEmail){
  try{
    const docSnap = await getDoc(availableIdRef);
    const collegeId = docSnap.data().id; //This should be the document id

    const adminRef = collection(firestore, 'admin');
    await addDoc(adminRef, {adminEmail, collegeId});

  }catch(e){
    alert("Error!");
  }
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个 id 为集合的新collegeId文档admin

我知道如何在 Web 版本 8(命名空间)中执行此操作,但不知道 Web 版本 9(模块化)。

javascript firebase google-cloud-firestore

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

我们可以访问已释放的内存吗?

我注意到函数的局部变量一直在获得相同的内存,因此我尝试在从函数返回后访问内存。 (我试图访问解除分配的内存)

第一次尝试: 在第一个代码中,我返回了局部变量的地址(也收到了编译器的警告),然后当我尝试在 main 中访问此内存时,程序由于分段错误而停止。

#include<stdio.h>
int * fun()
{
    int a;
    printf("Address of a is %p\n",&a);
    printf("Value of a is %d\n",a);
    return &a;
}
int main()
{
    int *p;
    p=fun();
    *p=100;//Segmentation fault: program stops execution at this line 
           // which can be verified as the printf statement in next line doesn't execute
    printf("Hi");
    fun();
}
Run Code Online (Sandbox Code Playgroud)

输出: testC.c:26:12: 警告:函数返回局部变量的地址 [-Wreturn-local-addr] return &a; ^~

a 的地址是 000000000061FDDC

a 的值为 0

第二次尝试: 现在我尝试了同样的事情,但有一点变化,我没有直接返回地址,而是在额外指针的帮助下返回了它,在这种情况下,我没有收到编译器的任何警告,我成功地访问了一个已释放的内存main 通过将值 100 放在该地址处,该地址可以在下一次函数调用期间看到。

#include<stdio.h>
int * fun()
{ …
Run Code Online (Sandbox Code Playgroud)

c segmentation-fault

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