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

时间:2011-05-27 12:04:48

标签: class pointers gcc vector

我想通过指针检索类函数的返回值。在这种情况下,返回值是一个向量(在类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

谢谢!

2 个答案:

答案 0 :(得分:0)

这可能意味着矢量显然无法复制,因此您无法返回vec值。在这里发布GetA功能的来源是个好主意。此外,您可能最好切换到C ++标准库std :: vector类。

答案 1 :(得分:0)

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*/;,那么这是一个非常常见的优化,在这种情况下我不确定哪个编译器是错误的。