我试图创建一个类,该类将使用将通过模板传递的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) 我正在开发一个聊天应用程序,我希望我的应用程序支持分享贴纸、GIF 等。如何在 flutter 中实现这一点?
我们如何使用新的模块化 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(模块化)。
我注意到函数的局部变量一直在获得相同的内存,因此我尝试在从函数返回后访问内存。 (我试图访问解除分配的内存)
第一次尝试: 在第一个代码中,我返回了局部变量的地址(也收到了编译器的警告),然后当我尝试在 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)