Visual C ++错误LNK1120编译

时间:2012-10-03 14:22:59

标签: c++ visual-studio

下午好。我从Visual c ++开始,我有一个我不理解的编译问题。

我得到的错误如下:

错误LNK1120外部链接未解决

错误LNK2019

我粘贴代码:

C ++ TestingConsole.CPP

#include "stdafx.h"
#include "StringUtils.h"
#include <iostream>

int _tmain(int argc, _TCHAR* argv[])
{
using namespace std;
string res = StringUtils::GetProperSalute("Carlos").c_str();
cout << res;
return 0;
}

StringUtils.cpp

#include "StdAfx.h"
#include <stdio.h>
#include <ostream>
#include "StringUtils.h"
#include <string>
#include <sstream>
using namespace std;


static string GetProperSalute(string name)
{
return "Hello" + name;
}

标题:StringUtils.h

#pragma once
#include <string>
using namespace std;



class StringUtils
{

public:

static string GetProperSalute(string name);

};

1 个答案:

答案 0 :(得分:2)

您只需在类定义中声明方法static,并在定义时使用类名对其进行限定:

static string GetProperSalute(string name)
{
return "Hello" + name;
}

应该是

string StringUtils::GetProperSalute(string name)
{
return "Hello" + name;
}

其他说明:

  • 删除using namespace std;。更喜欢完全资格(例如std::string
  • 您的班级StringUtils似乎更适合namespace(这意味着代码会有更多变化)
  • string res = StringUtils::GetProperSalute("Carlos").c_str();没用,您可以这样做:string res = StringUtils::GetProperSalute("Carlos");
  • const引用而不是按值传递字符串:std::string GetProperSalute(std::string const& name)