下午好。我从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);
};
答案 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)