我无法理解如何将结构(通过引用)传递给函数,以便可以填充结构的成员函数。到目前为止我已经写了:
bool data(struct *sampleData)
{
}
int main(int argc, char *argv[]) {
struct sampleData {
int N;
int M;
string sample_name;
string speaker;
};
data(sampleData);
}
我得到的错误是:
C++ 要求所有声明都有类型说明符 布尔数据(const &testStruct)
我尝试了一些在这里解释的示例:在 C++ 中按值传递临时结构的简单方法?
希望有人能帮助我。
首先,你的 data() 函数的签名:
bool data(struct *sampleData)
不可能起作用,因为该参数缺少名称。当您声明要实际访问的函数参数时,它需要一个名称。所以将其更改为:
bool data(struct sampleData *samples)
但在 C++ 中,实际上根本不需要使用
struct
。所以这可以简单地变成:
bool data(sampleData *samples)
其次,此时 data() 还不知道
sampleData
结构。所以你应该在那之前声明它:
struct sampleData {
int N;
int M;
string sample_name;
string speaker;
};
bool data(sampleData *samples)
{
samples->N = 10;
samples->M = 20;
// etc.
}
最后,您需要创建一个类型为
sampleData
的变量。例如,在您的 main() 函数中:
int main(int argc, char *argv[]) {
sampleData samples;
data(&samples);
}
请注意,您需要将变量的地址传递给 data() 函数,因为它接受指针。
但是,请注意,在 C++ 中,您可以直接通过引用传递参数,而不需要用指针“模拟”它。你可以这样做:
// Note that the argument is taken by reference (the "&" in front
// of the argument name.)
bool data(sampleData &samples)
{
samples.N = 10;
samples.M = 20;
// etc.
}
int main(int argc, char *argv[]) {
sampleData samples;
// No need to pass a pointer here, since data() takes the
// passed argument by reference.
data(samples);
}
通过引用将结构传递给函数:简单:)
#define maxn 1000
struct solotion
{
int sol[maxn];
int arry_h[maxn];
int cat[maxn];
int scor[maxn];
};
void inser(solotion &come){
come.sol[0]=2;
}
void initial(solotion &come){
for(int i=0;i<maxn;i++)
come.sol[i]=0;
}
int main()
{
solotion sol1;
inser(sol1);
solotion sol2;
initial(sol2);
}
bool data(sampleData *data)
{
}
您需要告诉方法您正在使用哪种类型的结构。在本例中为样本数据。
注意:在这种情况下,您需要在方法之前定义结构体才能被识别。
示例:
struct sampleData
{
int N;
int M;
// ...
};
bool data(struct *sampleData)
{
}
int main(int argc, char *argv[]) {
sampleData sd;
data(&sd);
}
注2:我是C类人。可能有一种更 C++ 的方式来做到这一点。
可以在函数参数内构造一个结构体:
function({ .variable = PUT_DATA_HERE });
我正在arduino中使用struct。 i 通过引用传递结构。 并使用 -> 访问成员并更改存储的值。 但是当函数终止并且程序返回到 void 循环时,变化没有发生。