HI
如何在.h文件中定义bool方法并在cpp文件中使用它? 我有
my.h
#include <string>
public class me;
class me
{
public:
me();
private bool method(string name); //it is ok??
}
my.cpp
#include 'my.h';
me::me()
{
method(string name); //can i do this? isn't there another alternative?
}
method (String name)
{
cout<<"name"<<endl;
}
不工作。为什么?
答案 0 :(得分:8)
我建议你从教程中学习C ++的基础知识
my.h
#include <string>
class me
{
public:
me();
bool method(std::string name) const;
};
my.cpp
#include 'my.h';
me::me()
{
}
bool me::method(std::string name)
{
std::cout << name << std::endl;
}
如上所述,我不需要将:: method作为成员函数(它可能是静态的)。
那里有很多小修复。我觉得你来自C#(可能是java)。阅读差异。谷歌有很好的消息来源:)
答案 1 :(得分:2)
您的代码存在许多问题。
my.h
#include <string>
// public class me; // Absolutely not needed. From which language did you get this?
class me
{
public:
me();
private: // You need the colon here.
bool method(string name); //it is ok?? // No. The class is called std::string. You should pass it by const-reference (const std::string& name);
}
my.cpp
#include 'my.h';
me::me()
{
// `name` is undefined here. You also don't need to specify the type.
//method(string name); //can i do this? isn't there another alternative?
method("earl");
}
// method (String name) // See previous comment about const-reference and the name of the class. Also note that C++ is case-sensitive. You also need to specify the return type and the class name:
bool me::method(const std::string& name)
{
// cout<<"name"<<endl; // Close...
std::cout << "My name is " << name << std::endl;
return true; // we are returning a `bool, right?
}
您还需要致电您的代码:
int main()
{
me instance_of_me;
return 0;
}
我建议您查看a good C++ tutorial和some reading material。
你能不能告诉我为什么我需要通过引用传递std :: string?
这个问题已经在StackOverflow上被问过(不止一次)。我推荐this answer。
与我有什么关系?
事后看来,mo
是变量名称的可怕选择。 instance_of_me
可能是更好的选择。这一行构造了一个me
的实例,调用构造函数(后者又调用method("earl")
)
你的意思是我的方法(“你好”);在main()
中
我当然没有!
您将method
声明为private
成员函数。因此,不能从课外调用此方法。
答案 2 :(得分:1)
首先,您在:
private
其次,如果cpp文件中的method (String name)
应该是您班级的method (String name)
,则必须是:
bool me::method(std::string name)
{
// ...
}
第三,如果你希望这个bool me::method(std::string name)
是一个不同的函数,一个全局函数,而不是你的类,它必须是:
ret_type method(std::string name)
{
// ...
}
而且,第四,
cout<<"name"<<endl;
将pring字符串(literal)“name”。如果要打印变量name
,请在不带引号的情况下使用它:
std::cout<< name <<endl;
我建议您获得book
me::me()
{
method(string name); //can i do this? isn't there another alternative?
}
method(string name)
- 这不是有效的语法。它应该是这样的:
me::me()
{
string name;
// do something with name
method( name ); // if "method" is a method, for real
}