通过结构和函数理解 Rcpp 代码中的错误消息

问题描述 投票:0回答:1

当我运行以下代码时,我收到一些我不理解的错误消息 -

“add_f”之前的预期初始化程序

没有匹配的函数可用于调用 'try_grid::try_grid(Rcpp::NumericMatrix&, Rcpp:: NumericMatrix&, int&)

有人可以解释我做错了什么吗?

.cpp 文件:

#include <Rcpp.h>

using namespace Rcpp;

//Declaring a structure
struct try_grid
{
    NumericMatrix x;
    NumericMatrix y;
    int size;
}

// Declaring function
Void add_f(const try_grid&);

// [[Rcpp::export]]
NumericMatrix plussomething(NumericMatrix samp, NumericMatrix tramp, int size)
{
    // Declaring and defining output matrix
    NumericMatrix sol(size, size);

    // Initialising members of the structure
    struct* try_grid m = {samp, tramp, size};

    // operation
    try_grid add_f(m);


    // Creating output
    for(int i=0; i<size; i++)
    {
        for(int j=0; j<size; j++)
        {
            sol(i,j) = m.x(i,j) + m.y(i, j);
        }    
    }
    
    return(sol);
}

// Defining function
try_grid add_f(NumericMatrix x, NumericMatrix y, int size)
{
   for(int i=0; i<size; i++)
    {
        for(int j=0; j<size; j++)
        {
            if(x(i,j) == 0 && y(i,j) != 0)
            {
                x(i,j) = y(i,j);
            }

            if(y(i,j) == 0 && x(i,j) != 0)
            {
                y(i,j) = x(i,j);
            }
        }    
    }

    return try_grid(x, y, size);
}

R代码:

#Creating a matrix
samp <- matrix(0, 5, 5)
samp[3,3] <- 1

tramp <- matrix(0, 5, 5)
tramp[2,2] <- 2

sss <- 5

#Accessing the Rcpp file
sourceCpp('rcppfunction.cpp')
rcpp
1个回答
0
投票

您用大写字母 V 写了

Void
。这不作为关键字存在 - 请使用
void
。 还有错误信息

expected initializer before 'add_f'

提示,

© www.soinside.com 2019 - 2024. All rights reserved.