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 );