C++ 如何解决c++;密码? #包括 #包括 使用名称空间std; 类解决方案{ 公众: void reverseWords(字符串和字符串) { cout
您必须创建一个类为C++ 如何解决c++;密码? #包括 #包括 使用名称空间std; 类解决方案{ 公众: void reverseWords(字符串和字符串) { cout,c++,class,oop,C++,Class,Oop,您必须创建一个类为Solution的对象,然后使用该对象调用您的函数 #include<iostream> #include<stdlib.h> using namespace std; class Solution { public: void reverseWords(string& s) { cout << s; } }; int main() { string c; // c= (char *) malloc(
Solution
的对象,然后使用该对象调用您的函数
#include<iostream>
#include<stdlib.h>
using namespace std;
class Solution {
public:
void reverseWords(string& s)
{
cout << s;
}
};
int main()
{
string c;
// c= (char *) malloc(100*sizeof(char ));
c = "sahil solanki";
Solution::reverseWords(&c);
}
与
void reverseWords(string s)
这是在寻找一个不存在的静态(或“类”)函数reverseWords()
。(因此出现错误消息“no matching function”。)我将不解释类函数是什么,因为它超出了简单的SO答案的范围(很可能不是您目前正在寻找的)
要调用解决方案
函数,您需要该类型的对象(或实例,谢谢Yann4):
Solution::reverseWords(&c);
“面向对象”的一般思想是类解决方案
定义数据和对该数据进行操作的函数(与C相反,C通常在结构中定义数据,然后几个独立定义的函数对该数据进行操作)
请注意,在调用reverseewords()
时,您不需要&c
;这将采用c
的地址,这不是必需的:
Solution sol; // construct a Solution object named sol
sol.reverseWords(c); // tell the sol object to reverseWords()
这是一个接受字符串引用的函数。也就是说,你用一个字符串对象作为参数来调用它您可能熟悉from C,它允许修改参数,这是由于参数类型为引用而自动发生的。如果您不希望参数可修改,请声明一个const
reference
void reverseWords( string & s );
…或对象(但是,它会在堆栈上创建参数的副本):
无论哪种方式,都可以将函数调用为sol.reverseWords(c)
,即不使用&
运算符
当然,正如juanchopanza所指出的,如果你使用std::string
,你必须#包括
三个相互关联的注释:
>“裸”指针(由<代码>和C <代码>或<代码> MARROCK()>代码>所产生的类型在现代C++中是很少的,如果需要的话,请引用引用的地方,以及必须的引用。
在小型测试程序中使用命名空间std;
是可以的。在较大的代码库中,尤其是头文件中,显式命名空间限定(例如std::string
)更好
虽然C++支持面向对象,但它确实是一种多范式语言,不要被诱惑到“一切都应该是对象”的想法。
如果其他人想知道错误:调用“Solution::reverseWords(std::string*)没有匹配的函数“
在这种情况下,最快/最简单的修复方法是将reverseWords设置为静态。在面向对象编程中消除错误的工作原理与在过程编程中相同。阅读错误文本,了解它的含义并修复它。仅此而已。如果OP没有听说过这样的术语“对象”,它有时也被称为“实例”OP还应包括
。
Solution sol; // construct a Solution object named sol
sol.reverseWords(c); // tell the sol object to reverseWords()
void reverseWords( string & s );
void reverseWords( string const & s );
void reverseWords( string s );