Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “错误”;此声明没有存储类或类型说明符;_C++_C_Visual Studio 2013 - Fatal编程技术网

C++ “错误”;此声明没有存储类或类型说明符;

C++ “错误”;此声明没有存储类或类型说明符;,c++,c,visual-studio-2013,C++,C,Visual Studio 2013,我正在用VisualStudio编写我的第一个应用程序,我不明白它显示了一个错误 有两个文件,会话和登录。登录使用会话的set和get函数。如下面所示,Login调用“setCurrentLang”,这是Visual Studio在Login.cpp上显示的消息:“此声明没有存储类或类型说明符”。如果我编译,这就是错误,那么: “错误26错误C2365:'setCurrentLang':重新定义;以前的定义是'function'(..)\GUI\Login.cpp” 这是Session.cpp文

我正在用VisualStudio编写我的第一个应用程序,我不明白它显示了一个错误

有两个文件,会话和登录。登录使用会话的set和get函数。如下面所示,Login调用“setCurrentLang”,这是Visual Studio在Login.cpp上显示的消息:“此声明没有存储类或类型说明符”。如果我编译,这就是错误,那么:

“错误26错误C2365:'setCurrentLang':重新定义;以前的定义是'function'(..)\GUI\Login.cpp”

这是Session.cpp文件:

#include "Session.h"
const char* CURRENT_LANG;
void setCurrentLang( char* lang){
    CURRENT_LANG = strdup(lang);
}
const char* getCurrentLang(){
    return CURRENT_LANG;
}
会议h

#ifndef __SESSION_H__
#define __SESSION_H__

#include <cstring>
#include <stdio.h>

void setCurrentLang( char* lang);
const char* getCurrentLang();

#endif

非常感谢你的帮助

您可以在任何上下文之外调用该方法。这是不可能的。如果要在开始时设置语言,可以在
main
的开头调用它,或者使用在构造函数中调用它的伪静态类:

static class LanguageSetter
{
public:
    LanguageSetter()
    {
        setCurrentLang("English");
    }
} dummy;
或者只需在当前语言的定义中设置默认值:

// std::string because this is C++, not C
std::string CURRENT_LANG = "English";

您可以在任何上下文之外调用该方法。这是不可能的。如果要在开始时设置语言,可以在
main
的开头调用它,或者使用在构造函数中调用它的伪静态类:

static class LanguageSetter
{
public:
    LanguageSetter()
    {
        setCurrentLang("English");
    }
} dummy;
或者只需在当前语言的定义中设置默认值:

// std::string because this is C++, not C
std::string CURRENT_LANG = "English";


请编辑您的问题,以包含完整且未编辑的错误输出。还要指出错误的来源。选择一种语言。谢谢@JoachimPileborg,我编辑了这篇文章。@WhozCraig,我不明白你的意思。我不能在C++上使用C吗?你可以在C++中使用C,但是C++会让你自己开枪,当你把它与C混合时,它甚至会给你一个带安全的猎枪。因此,很难调试问题、内存泄漏和崩溃,因为您需要跟踪内存(因为C)和实例生存期(因为C++ +RAII),并确保这两个同步非常完美。请编辑您的问题以包括完整的未编辑错误输出。还要指出错误的来源。选择一种语言。谢谢@JoachimPileborg,我编辑了这篇文章。@WhozCraig,我不明白你的意思。我不能在C++上使用C吗?你可以在C++中使用C,但是C++会让你自己开枪,当你把它与C混合时,它甚至会给你一个带安全的猎枪。因此,很难调试问题,内存泄漏和崩溃,因为你需要跟踪你的内存(因为C)和实例生存期(因为C++ +RAII),并确保这两个同步完美。把功能放在一边,为什么我不能调用登录上的函数?我如何调用此函数?您不能调用它,因为它没有上下文。要解决这个问题,请阅读我的答案。是的,我想我理解你的意思。但是我想在开始时设置一种语言,并使用一种方法从任何文件管理会话。例如,为当前用户设置新名称或新电子邮件。这是最好的方法吗?我怎么能调用“dummy”的函数呢?感谢您的耐心。构造函数将自动调用。请注意,它未定义不同文件的初始化顺序,因此在多个文件中使用时可能无法正常工作。有两种方法可以处理这个问题,一种是,另一种(更可取的是)根本不这样做,而是在使用所有资源时逐步初始化它们,最好的方法是在定义中指定
CURRENT_LANG
的默认值,并在代码为C++时使用
std::string
std::string CURRENT_LANG=“English”将功能放在一边,为什么我不能在Login.cpp时调用该函数??我如何调用此函数?您不能调用它,因为它没有上下文。要解决这个问题,请阅读我的答案。是的,我想我理解你的意思。但是我想在开始时设置一种语言,并使用一种方法从任何文件管理会话。例如,为当前用户设置新名称或新电子邮件。这是最好的方法吗?我怎么能调用“dummy”的函数呢?感谢您的耐心。构造函数将自动调用。请注意,它未定义不同文件的初始化顺序,因此在多个文件中使用时可能无法正常工作。有两种方法可以处理这个问题,一种是,另一种(更可取的是)根本不这样做,而是在使用所有资源时逐步初始化它们,最好的方法是在定义中指定
CURRENT_LANG
的默认值,并在代码为C++时使用
std::string
std::string CURRENT_LANG=“English”