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];
    }
}
我试图按照以下建议实现矢量
#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);
    }
}
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];
    }
}
| 归档时间: | 
 | 
| 查看次数: | 27731 次 | 
| 最近记录: |