gpt4 book ai didi

c++ - 是否可以在其成员函数中使用类模板?

转载 作者:行者123 更新时间:2023-11-30 02:26:16 26 4
gpt4 key购买 nike

我的类是大小参数化的。在其中一种方法中,我必须创建一个临时数组,但我不知道如何将类的大小模板传递给成员函数。这是我尝试的方式:

#include <array>

template<unsigned int N>
class MyClass{
std::array<int,N> m_data;
public:
void myFunc(){
std::array<int,N> tempArray;
}
};


int main(){
MyClass<5> obj;
obj.myFunc();
}

编辑:构建日志:

C:\Windows\system32\cmd.exe /C ""C:/Program Files/mingw-w64/x86_64-6.3.0-win32-seh-rt_v5-rev1/mingw64/bin/mingw32-make.exe" -j6 SHELL=cmd.exe -e -f  Makefile"
"----------Building project:[ hatizsak_konyv - Debug ]----------"
mingw32-make.exe[1]: Entering directory 'E:/progi/c++/CodeLite/Other/algoritmusok/dinamikus_programozas/hatizsak_konyv'
"C:/Program Files/mingw-w64/x86_64-6.3.0-win32-seh-rt_v5-rev1/mingw64/bin/g++.exe" -c "E:/progi/c++/CodeLite/Other/algoritmusok/dinamikus_programozas/hatizsak_konyv/main.cpp" -g -O0 -Wall -o ./Debug/main.cpp.o -I. -I.
E:/progi/c++/CodeLite/Other/algoritmusok/dinamikus_programozas/hatizsak_konyv/main.cpp: In instantiation of 'void MyClass<N>::myFunc() [with unsigned int N = 5u]':
E:/progi/c++/CodeLite/Other/algoritmusok/dinamikus_programozas/hatizsak_konyv/main.cpp:15:16: required from here
E:/progi/c++/CodeLite/Other/algoritmusok/dinamikus_programozas/hatizsak_konyv/main.cpp:8:27: warning: unused variable 'tempArray' [-Wunused-variable]
std::array<int,N> tempArray;
^~~~~~~~~
"C:/Program Files/mingw-w64/x86_64-6.3.0-win32-seh-rt_v5-rev1/mingw64/bin/g++.exe" -o ./Debug/hatizsak_konyv @"hatizsak_konyv.txt" -L.
mingw32-make.exe[1]: Leaving directory 'E:/progi/c++/CodeLite/Other/algoritmusok/dinamikus_programozas/hatizsak_konyv'
====1 errors, 1 warnings====

最佳答案

模板参数在模板类的方法内部是可见的;代码是正确的。

根本没有错误,提供的代码示例和构建日志中也没有。构建日志中的消息只是一个警告(在为其提供上下文之前的行),根据提供的 -Wall 选项,它正确地警告您未使用该变量的事实在命令行上。除此之外,代码 compiles fine ,在 ideone 和我的机器上(它给你完全相同的警告,而不是错误)。

[matteo@teolapkubuntu /tmp]$ g++ -Wall -Wextra -std=c++11 stuff.cpp 
stuff.cpp: In instantiation of ‘void MyClass<N>::myFunc() [with unsigned int N = 5u]’:
stuff.cpp:15:16: required from here
stuff.cpp:8:27: warning: unused variable ‘tempArray’ [-Wunused-variable]
std::array<int,N> tempArray;
^~~~~~~~~

构建日志末尾的“1 个错误”消息只是 CodeLite 误解了编译器输出;有an open bug about it , 条件与您相似。

关于c++ - 是否可以在其成员函数中使用类模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43019886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com