我曾经是一名C程序员,并在过去几年中专注于Python。现在我正在尝试理解C++面向对象编程。我创建了一个包含结构体的类。我想将类的引用传递给一个函数。我已经阅读了几篇关于按引用传递的文章,如下所示:passing object by reference in C++。
在C++中,是否可能将类引用传递给函数,还是这是不可能的?我试图将对类的引用传递给printStruct函数。以下是我的示例:
错误信息: 错误1:错误C4430: 缺少类型说明符 - 假定为 int。注意:C++ 不支持默认 int。c:\users\visual studio 2013\projects\pass class\pass class\pass class.cpp 8 1 Pass Class 错误2:错误C2143: 语法错误:缺少 ',',在 '&' 之前。c:\users\visual studio 2013\projects\pass class\pass class\pass class.cpp 8 1 Pass Class IntelliSense:对象具有与成员函数不兼容的类型限定符。 对象类型为:const SampleClass c:\Users\Visual Studio 2013\Projects\Pass Class\Pass Class\Pass Class.cpp 41 37 Pass Class
在C++中,是否可能将类引用传递给函数,还是这是不可能的?我试图将对类的引用传递给printStruct函数。以下是我的示例:
修正后的代码
#include "stdafx.h"
#include <string>
#include <iostream>
class SampleClass
{
public:
struct TestStructType {
std::string string1;
};
SampleClass();
std::string GetString1();
private:
TestStructType PrivateVar;
};
SampleClass::SampleClass()
{
PrivateVar.string1 = "String 1";
};
std::string SampleClass::GetString1() { return PrivateVar.string1; };
void printStruct(SampleClass&);
int _tmain(int argc, _TCHAR* argv[])
{
SampleClass sc;
std::cout << sc.GetString1() << std::endl;
printStruct(sc);
return 0;
};
void printStruct(SampleClass& ssc)
{
std::cout << "The String is: " << ssc.GetString1() << std::endl;
};
错误信息: 错误1:错误C4430: 缺少类型说明符 - 假定为 int。注意:C++ 不支持默认 int。c:\users\visual studio 2013\projects\pass class\pass class\pass class.cpp 8 1 Pass Class 错误2:错误C2143: 语法错误:缺少 ',',在 '&' 之前。c:\users\visual studio 2013\projects\pass class\pass class\pass class.cpp 8 1 Pass Class IntelliSense:对象具有与成员函数不兼容的类型限定符。 对象类型为:const SampleClass c:\Users\Visual Studio 2013\Projects\Pass Class\Pass Class\Pass Class.cpp 41 37 Pass Class
printStruct(psc);
简化为printStruct(sc);
,不需要使用指针。 - πάντα ῥεῖ