如何访问访问函数的指针的返回值? 将代码转换为gcc

问题描述

| 我想通过指针检索类函数的返回值。在这种情况下,返回值是一个向量(在vec类中定义),并由GetA()返回。但是,下面的代码会产生错误。您不能以这种方式使用指针来分配函数的值吗?
#include<cstdio>
#include<string.h>
#include<stdlib.h>
#include<math.h>

#include \"model.h\"
#include \"vector.h\"

int main (int argc,char *argv[]) {
//some code

model *thisModel;

thisModel = new model(name,outName,fileFormat);
vec a;
a = thisModel->GetA();   //this is line 264
GetA函数在类模型中定义为:
vec model::GetA() {return a;}
我收到错误:main.cpp:264:错误:没有匹配的函数可以调用vec :: vec(vec) 一些背景:我正在将一些代码从在Borland上的编译转换为gcc(以前在Borland上可以正常工作)。我已经摆脱了大多数错误,但是我仍然不明白为什么上面的代码不再起作用。也:
thisModel-> GetA();  //does not produce an error but does not return the vector I need
谢谢!     

解决方法

        这可能意味着向量显然无法复制,因此您无法返回vec值。最好在此处发布GetA函数的源代码。另外,最好切换到C ++标准库std :: vector类。     ,        
main.cpp:264: error: no matching function for call to ‘vec::vec(vec)’ 
这意味着vec类没有副本构造函数。如果可以更改代码,请添加以下代码:
vec::vec(const vec& r) {/*initialize data*/}
如果调用代码如您所说,那么我认为这是gcc中的错误。您可以通过使用其他构造函数之一构造vec a或在分配它之前调用任何成员(例如
.size()
)来解决此问题。 如果您的代码实际上是
vec a = /*stuff*/;
,那么这是一个非常常见的优化,并且我不确定那种情况下哪个编译器是错误的。