如何解决 C++ 代码中的编译错误
How to resolve a compile error in c++ code?
#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);
}
当我编译这个程序时,它给了我错误,所以如何删除错误。我是面向对象编程的新手。
Solution::reverseWords(&c);
这是在寻找一个不存在的静态(或"类"(函数reverseWords()
。(因此出现错误消息"无匹配函数"。我不会解释什么是类函数,因为它超出了简单的 SO 答案的范围(而且很可能不是您目前正在寻找的内容(。
要调用Solution
函数,您需要该类型的对象(或实例,感谢Yann4(:
Solution sol; // construct a Solution object named sol
sol.reverseWords(c); // tell the sol object to reverseWords()
"面向对象"的一般思想是class Solution
定义数据和对该数据进行操作的函数(与C相反,C通常以struct
定义数据,然后几个独立定义的函数对该数据进行操作(。
请注意,在调用reverseWords()
时不需要&c
;这将获取c
的地址,这不是必需的:
void reverseWords( string & s );
这是一个接受字符串引用的函数。 即,你用一个字符串对象作为参数来调用它。您可能熟悉的C中的"地址获取",允许修改参数,由于引用的参数类型而自动发生。如果您不希望参数可修改,则可以声明一个const
引用...
void reverseWords( string const & s );
。或一个对象(但是,它会在堆栈上创建参数的副本(:
void reverseWords( string s );
无论哪种方式,您都可以调用该函数sol.reverseWords(c)
,即没有&
运算符。
而且,当然,正如胡安乔潘扎指出的那样,如果你使用std::string
,你必须#include <string>
.
三个丢失的相关说明:
"裸"指针(由
&c
或malloc()
产生的那种(在现代C++中很少(如果有的话(是必需的。尽可能使用引用,在必须使用智能指针的地方使用智能指针。using namespace std;
在小型测试程序中是可以的。在较大的代码库中,尤其是头文件,显式命名空间限定(例如std::string
(更好。虽然C++支持面向对象,但它确实是一种多范式语言;不要被引诱认为"一切都应该是一个对象"。
您必须创建一个类 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 s;
s.reverseWords(c);
}
编辑:
如果使函数static
,则可以在不创建对象的情况下调用函数。
取代
void reverseWords(string s)
跟
static void reverseWords(string s)
- 如何修复sfml c++代码编译错误
- 尝试用java代码编译和运行c++代码
- 此代码编译良好,但文件未创建?请指出错误
- 为什么我的 BaseClass:Method 代码编译(带有单冒号)?
- 代码编译没有任何输出,入门程序
- 通过Python Distutils(用于Python C扩展)使用可重定位的设备代码编译CUDA代码
- 代码编译但不起作用!cmd窗口只是理想和理想,但什么也没发生
- 无法使用 g++ 使用C++代码编译 C 库
- 如何在Ubuntu中使用Visual Studio代码编译C++代码
- 推力+提升代码编译错误
- C++代码编译,但在 Zorin OS 上运行时显示错误
- 如何在使用模板时将 CPP 代码编译到库文件中
- 是否可以将Visual Studio 2017将C 代码编译到EXE以外的文件类型中
- 使用 Visual Studio for C++ 代码编译错误
- 使用 Android Studio 使用本机代码编译 apk 时,如何在链接处删除 libgnustl_static.
- 使用 Emscripten 将 OpenCV 代码编译C++ Javascript
- 将C 代码编译到独立应用程序.App
- 为什么此代码编译 (C++11) 而没有类型不匹配错误
- 重用编译器前端的结果,以加快多个配置/平台的C++代码编译
- 如何将C++11代码编译为网络汇编