jun*_*omo 8 c++ visual-c++ c++11
我是C++的新手,我正在编写以下代码.我需要遍历调用函数中的所有插件 - testFunction.我知道这在C#中有效,但是这段代码不起作用.任何人都可以指出在C++中正确的方法吗?
#include "stdafx.h"
#include <iostream>
#include "resource.h"
int testFunction(char* tester);
int _tmain()
{
int mainProd=2;
int Addons[]={7,8,9,10};
testFunction(mainProd,Addons);
}
void testFunction(int mainProd,int addons[])
{
for(int x = 0 ; addons.length;++x) ---- Not working
{
std::cout<< addons[x];
}
}
Run Code Online (Sandbox Code Playgroud)
我试图按照以下建议实现矢量
#include "stdafx.h"
#include <iostream>
#include "resource.h"
#include <vector>
void testFunction(std::vector<int> addons);
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<int> Addons ;
for(int i = 0 ;i<10;++i)
{
Addons.push_back(i);
}
testFunction(Addons);
}
void testFunction(std::vector<int> addons)
{
for(int i =0 ; i<addons.size();++i)
{
std::cout<<addons.at(i);
}
}
Run Code Online (Sandbox Code Playgroud)
Ton*_*ion 15
当作为参数传递给函数时,数组(原始数组)会衰减为指针,因此您的数组没有大小信息.
您需要将数组的长度显式传递给函数以在函数内部知道它.
或者,更好的是,使用a std::vector然后您将.size()在需要时随时可用.
除了使用向量之外,如Tony建议的那样,您可以使用模板并通过引用传递数组,以便编译器推断出数组的大小:
template<int N>
void testFunction(int mainProd,int (&addons)[N])
{
for(int x = 0; x < N; ++x) // ---- working
{
std::cout<< addons[x];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27731 次 |
| 最近记录: |